Fix loading of themes when NO-ENABLE is t.
authorChong Yidong <cyd@gnu.org>
Wed, 18 Dec 2013 08:53:22 +0000 (16:53 +0800)
committerChong Yidong <cyd@gnu.org>
Wed, 18 Dec 2013 08:53:22 +0000 (16:53 +0800)
* lisp/custom.el (custom-push-theme): If custom--inhibit-theme-enable
is non-nil, do not create a new entry in the symbol's theme-value
or theme-face property; update theme-settings only.

Fixes: debbugs:14664

lisp/ChangeLog
lisp/custom.el

index db3ec56..b4d4eca 100644 (file)
@@ -1,5 +1,9 @@
 2013-12-18  Chong Yidong  <cyd@gnu.org>
 
+       * custom.el (custom-push-theme): If custom--inhibit-theme-enable
+       is non-nil, do not create a new entry in the symbol's theme-value
+       or theme-face property; update theme-settings only (Bug#14664).
+
        * cus-theme.el (custom-new-theme-mode-map): Add bindings
        (Bug#15674).
 
index 0df22a8..1d00dda 100644 (file)
@@ -869,20 +869,21 @@ See `custom-known-themes' for a list of known themes."
        (setcar (cdr setting) value)))
      ;; Add a new setting:
      (t
-      (unless old
-       ;; If the user changed a variable outside of Customize, save
-       ;; the value to a fake theme, `changed'.  If the theme is
-       ;; later disabled, we use this to bring back the old value.
-       ;;
-       ;; For faces, we just use `face-new-frame-defaults' to
-       ;; recompute when the theme is disabled.
-       (when (and (eq prop 'theme-value)
-                  (boundp symbol))
-         (let ((sv  (get symbol 'standard-value))
-               (val (symbol-value symbol)))
-           (unless (and sv (equal (eval (car sv)) val))
-             (setq old `((changed ,(custom-quote val))))))))
-      (put symbol prop (cons (list theme value) old))
+      (unless custom--inhibit-theme-enable
+       (unless old
+         ;; If the user changed a variable outside of Customize, save
+         ;; the value to a fake theme, `changed'.  If the theme is
+         ;; later disabled, we use this to bring back the old value.
+         ;;
+         ;; For faces, we just use `face-new-frame-defaults' to
+         ;; recompute when the theme is disabled.
+         (when (and (eq prop 'theme-value)
+                    (boundp symbol))
+           (let ((sv  (get symbol 'standard-value))
+                 (val (symbol-value symbol)))
+             (unless (and sv (equal (eval (car sv)) val))
+               (setq old `((changed ,(custom-quote val))))))))
+       (put symbol prop (cons (list theme value) old)))
       (put theme 'theme-settings
           (cons (list prop symbol theme value) theme-settings))))))