changeset 69624:efd1add5bedf

* cus-edit.el (custom-face-set): Call custom-push-theme before face-spec set so that `changed' theme is correctly saved. (custom-face-reset-standard): Reset to recalculated face rather than defface spec. * custom.el (custom-push-theme): Only save `changed' theme if the current face does not match the defface specs.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 21 Mar 2006 16:44:10 +0000
parents a80a437040ab
children 17473f7e626b
files lisp/ChangeLog lisp/cus-edit.el lisp/custom.el
diffstat 3 files changed, 18 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Mar 21 14:39:41 2006 +0000
+++ b/lisp/ChangeLog	Tue Mar 21 16:44:10 2006 +0000
@@ -1,3 +1,13 @@
+2006-03-21  Chong Yidong  <cyd@stupidchicken.com>
+
+	* cus-edit.el (custom-face-set): Call custom-push-theme before
+	face-spec set so that `changed' theme is correctly saved.
+	(custom-face-reset-standard): Reset to recalculated face rather
+	than defface spec.
+
+	* custom.el (custom-push-theme): Only save `changed' theme if the
+	current face does not match the defface specs.
+
 2006-03-21  Simon Josefsson  <jas@extundo.com>
 
 	* pgg-gpg.el: Ideas below based on patch from Sascha Wilde
--- a/lisp/cus-edit.el	Tue Mar 21 14:39:41 2006 +0000
+++ b/lisp/cus-edit.el	Tue Mar 21 16:44:10 2006 +0000
@@ -3412,12 +3412,12 @@
       ;; Make the comment invisible by hand if it's empty
       (custom-comment-hide comment-widget))
     (put symbol 'customized-face value)
+    (custom-push-theme 'theme-face symbol 'user 'set value)
     (if (face-spec-choose value)
 	(face-spec-set symbol value)
       ;; face-set-spec ignores empty attribute lists, so just give it
       ;; something harmless instead.
       (face-spec-set symbol '((t :foreground unspecified))))
-    (custom-push-theme 'theme-face symbol 'user 'set value)
     (put symbol 'customized-face-comment comment)
     (put symbol 'face-comment comment)
     (custom-face-state-set widget)
@@ -3490,13 +3490,17 @@
     (put symbol 'customized-face nil)
     (put symbol 'customized-face-comment nil)
     (custom-push-theme 'theme-face symbol 'user 'reset)
+    (face-spec-set symbol value)
     (custom-theme-recalc-face symbol)
     (when (or (get symbol 'saved-face) (get symbol 'saved-face-comment))
       (put symbol 'saved-face nil)
       (put symbol 'saved-face-comment nil)
       (custom-save-all))
     (put symbol 'face-comment nil)
-    (widget-value-set child value)
+    (widget-value-set child
+		      (custom-pre-filter-face-spec
+		       (list (list t (custom-face-attributes-get
+				      symbol nil)))))
     ;; This call manages the comment visibility
     (widget-value-set comment-widget "")
     (custom-face-state-set widget)
--- a/lisp/custom.el	Tue Mar 21 14:39:41 2006 +0000
+++ b/lisp/custom.el	Tue Mar 21 16:44:10 2006 +0000
@@ -819,7 +819,8 @@
 			 (not (equal (eval (car (get symbol 'standard-value)))
 				     (symbol-value symbol)))))
 		(setq old (list (list 'changed (symbol-value symbol))))
-	      (if (facep symbol)
+	      (if (and (facep symbol)
+		       (not (face-spec-match-p symbol (get symbol 'face-defface-spec))))
 		  (setq old (list (list 'changed (list
 		    (append '(t) (custom-face-attributes-get symbol nil)))))))))
 	(put symbol prop (cons (list theme value) old))