Another tweak to default face handling in face-spec-reset-face.

* lisp/faces.el (face-spec-reset-face): For the default face, reset the
attributes to default values.

Fixes: debbugs:10748
This commit is contained in:
Chong Yidong 2012-03-04 23:03:51 +08:00
parent db976e3cd8
commit c349f4e6ff
2 changed files with 22 additions and 6 deletions

View 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

View 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.