+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).
(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.
;; 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