Mercurial > emacs
changeset 84612:94df91d0b63e
(face-spec-set): When FRAME nil, look up each frame in SPEC.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Mon, 17 Sep 2007 02:13:51 +0000 |
parents | fb155376791a |
children | f8c971a5c815 |
files | lisp/faces.el |
diffstat | 1 files changed, 26 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/faces.el Mon Sep 17 00:24:12 2007 +0000 +++ b/lisp/faces.el Mon Sep 17 02:13:51 2007 +0000 @@ -1446,29 +1446,32 @@ FRAME is the frame whose frame-local face is set. FRAME nil means do it on all frames. See `defface' for information about SPEC. If SPEC is nil, do nothing." - (let ((attrs (face-spec-choose spec frame))) - (when spec - (face-spec-reset-face face frame)) - (while attrs - (let ((attribute (car attrs)) - (value (car (cdr attrs)))) - ;; Support some old-style attribute names and values. - (case attribute - (:bold (setq attribute :weight value (if value 'bold 'normal))) - (:italic (setq attribute :slant value (if value 'italic 'normal))) - ((:foreground :background) - ;; Compatibility with 20.x. Some bogus face specs seem to - ;; exist containing things like `:foreground nil'. - (if (null value) (setq value 'unspecified))) - (t (unless (assq attribute face-x-resources) - (setq attribute nil)))) - (when attribute - (set-face-attribute face frame attribute value))) - (setq attrs (cdr (cdr attrs))))) - ;; When we reset the face based on its spec, then it is unmodified - ;; as far as Custom is concerned. - (if (null frame) - (put (or (get face 'face-alias) face) 'face-modified nil))) + (if frame + (let ((attrs (face-spec-choose spec frame))) + (when spec + (face-spec-reset-face face frame)) + (while attrs + (let ((attribute (car attrs)) + (value (car (cdr attrs)))) + ;; Support some old-style attribute names and values. + (case attribute + (:bold (setq attribute :weight value (if value 'bold 'normal))) + (:italic (setq attribute :slant value (if value 'italic 'normal))) + ((:foreground :background) + ;; Compatibility with 20.x. Some bogus face specs seem to + ;; exist containing things like `:foreground nil'. + (if (null value) (setq value 'unspecified))) + (t (unless (assq attribute face-x-resources) + (setq attribute nil)))) + (when attribute + (set-face-attribute face frame attribute value))) + (setq attrs (cdr (cdr attrs))))) + ;; When we reset the face based on its spec, then it is unmodified + ;; as far as Custom is concerned. + (put (or (get face 'face-alias) face) 'face-modified nil) + ;; Set each frame according to the rules implied by SPEC. + (dolist (frame (frame-list)) + (face-spec-set face spec frame)))) (defun face-attr-match-p (face attrs &optional frame)