]> git.eshelyaron.com Git - emacs.git/commitdiff
Another tweak to default face handling in face-spec-reset-face.
authorChong Yidong <cyd@gnu.org>
Sun, 4 Mar 2012 15:03:51 +0000 (23:03 +0800)
committerChong Yidong <cyd@gnu.org>
Sun, 4 Mar 2012 15:03:51 +0000 (23:03 +0800)
* lisp/faces.el (face-spec-reset-face): For the default face, reset the
attributes to default values.

Fixes: debbugs:10748
lisp/ChangeLog
lisp/faces.el

index e338a6d2ebf2d5f025d46304c4c7ad9ae6457e71..12488b0cd52033a602e3201a9d9460f8015decc2 100644 (file)
@@ -1,3 +1,8 @@
+2012-03-04  Chong Yidong  <cyd@gnu.org>
+
+       * faces.el (face-spec-reset-face): For the default face, reset the
+       attributes to default values (Bug#10748).
+
 2012-03-04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * mail/emacsbug.el (report-emacs-bug-hook): Fix up thinko in
index cd7f92bfad4ae041e553cb132a12236cd1988aa3..0011e0357a16d37a8f21084b7998fde30891254c 100644 (file)
@@ -1513,12 +1513,23 @@ If SPEC is nil, return nil."
 
 (defun face-spec-reset-face (face &optional frame)
   "Reset all attributes of FACE on FRAME to unspecified."
-  (unless (eq face 'default)
-    (let (reset-args)
-      (dolist (attr-and-name face-attribute-name-alist)
-       (push 'unspecified reset-args)
-       (push (car attr-and-name) reset-args))
-      (apply 'set-face-attribute face frame reset-args))))
+  (apply 'set-face-attribute face frame
+        (if (eq face 'default)
+            ;; For the default face, avoid making any attribute
+            ;; unspecifed.  Instead, set attributes to default values
+            ;; (see also realize_default_face in xfaces.c).
+            (append
+             '(:underline nil :overline nil :strike-through nil
+               :box nil :inverse-video nil :stipple nil :inherit nil)
+             (unless (display-graphic-p frame)
+               '(:family "default" :foundry "default" :width normal
+                 :height 1 :weight normal :slant normal
+                 :foreground "unspecified-fg"
+                 :background "unspecified-bg")))
+          ;; For all other faces, unspecify all attributes.
+          (apply 'append
+                 (mapcar (lambda (x) (list (car x) 'unspecified))
+                         face-attribute-name-alist)))))
 
 (defun face-spec-set (face spec &optional for-defface)
   "Set FACE's face spec, which controls its appearance, to SPEC.