From c349f4e6ff1aaa8ef11f051d7b32952e705e09d9 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 4 Mar 2012 23:03:51 +0800 Subject: [PATCH] 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 --- lisp/ChangeLog | 5 +++++ lisp/faces.el | 23 +++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e338a6d2ebf..12488b0cd52 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-03-04 Chong Yidong + + * faces.el (face-spec-reset-face): For the default face, reset the + attributes to default values (Bug#10748). + 2012-03-04 Lars Magne Ingebrigtsen * mail/emacsbug.el (report-emacs-bug-hook): Fix up thinko in diff --git a/lisp/faces.el b/lisp/faces.el index cd7f92bfad4..0011e0357a1 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -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. -- 2.39.2