changeset 85272:389498ac4023

(face-spec-set): When FRAME is nil, set the default for new frames (restores pre-2007-09-17 behavior). Doc fix.
author Glenn Morris <rgm@gnu.org>
date Sat, 13 Oct 2007 19:36:10 +0000
parents bd12a59a344d
children 3e4b36ffb1c8
files lisp/faces.el
diffstat 1 files changed, 16 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/faces.el	Sat Oct 13 19:36:00 2007 +0000
+++ b/lisp/faces.el	Sat Oct 13 19:36:10 2007 +0000
@@ -1444,17 +1444,16 @@
 (defun face-spec-set (face spec &optional frame)
   "Set FACE's attributes according to the first matching entry in SPEC.
 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."
-  (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
+do it on all frames (and change the default for new 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 (or frame t)))
+    (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)
@@ -1463,9 +1462,12 @@
 	       (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 attribute
+	  ;; If frame is nil, set the default for new frames.
+	  ;; Existing frames are handled below.
+	  (set-face-attribute face (or frame t) attribute value)))
+      (setq attrs (cdr (cdr attrs)))))
+  (unless frame
     ;; 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)