]> git.eshelyaron.com Git - emacs.git/commitdiff
(face-normalize-spec): New function.
authorRichard M. Stallman <rms@gnu.org>
Tue, 31 Jul 2007 17:34:15 +0000 (17:34 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 31 Jul 2007 17:34:15 +0000 (17:34 +0000)
(frame-set-background-mode): Normalize face-spec
before calling face-spec-match-p.

lisp/ChangeLog
lisp/faces.el

index dc0c05462c8bea1726995f3922056c0a1e316d1a..066ae1fef1344aba06b3ed79eb4e89591a8c3e03 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-31  Daiki Ueno  <ueno@unixuser.org>
+
+        * faces.el (face-normalize-spec): New function.
+        (frame-set-background-mode): Normalize face-spec before calling
+        face-spec-match-p.
+
 2007-07-31  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * vc-bzr.el: New file (copied from the trunk).
index 090fbdba0356a7f0e0f839f61e59dc3f83d0efcd..daf5f39fbc16d7ca2463c1ef330a3d5f9f03e2e4 100644 (file)
@@ -1505,6 +1505,28 @@ If there is neither a user setting nor a default for FACE, return nil."
       (get face 'saved-face)
       (face-default-spec face)))
 
+(defsubst face-normalize-spec (spec)
+  "Return a normalized face-spec of SPEC."
+  (let (normalized-spec)
+    (while spec
+      (let ((attribute (car spec))
+           (value (car (cdr spec))))
+       ;; 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
+         (push attribute normalized-spec)
+         (push value normalized-spec)))
+      (setq spec (cdr (cdr spec))))
+    (nreverse normalized-spec)))
+
 \f
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Frame-type independent color support.
@@ -1647,7 +1669,8 @@ according to the `background-mode' and `display-type' frame parameters."
        ;; be unmodified, so we can avoid consing in the common case.
        (dolist (face (face-list))
          (when (not (face-spec-match-p face
-                                       (face-user-default-spec face)
+                                       (face-normalize-spec
+                                        (face-user-default-spec face))
                                        (selected-frame)))
            (push face locally-modified-faces)))
        ;; Now change to the new frame parameters