]> git.eshelyaron.com Git - emacs.git/commitdiff
* custom.el (enable-theme): Signal error if argument is not a
authorChong Yidong <cyd@stupidchicken.com>
Fri, 25 Nov 2005 18:00:10 +0000 (18:00 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 25 Nov 2005 18:00:10 +0000 (18:00 +0000)
theme.  Don't recalculate a face if it's not loaded yet.

* cus-face.el (custom-theme-set-faces): Don't change saved-face if
the `user' theme is in effect.

lisp/ChangeLog
lisp/cus-face.el
lisp/custom.el

index 0d2a8503fbd64eb222aadb55805e3bb8a9e04f9f..1f53f5ec12cae57f91df996b74cb79645041037f 100644 (file)
@@ -1,5 +1,11 @@
 2005-11-25  Chong Yidong  <cyd@stupidchicken.com>
 
+       * custom.el (enable-theme): Signal error if argument is not a
+       theme.  Don't recalculate a face if it's not loaded yet.
+
+       * cus-face.el (custom-theme-set-faces): Don't change saved-face if
+       the `user' theme is in effect.
+
        * info.el (Info-on-current-buffer): Record actual filename in
        Info-current-file, instead of t, or a fake filename if a non-file
        buffer.  Make autoload.
index 8a6e77f980503cbe271c2e23fd16e2a00ad11378..66713c286611402959346ca29002b4df09ff3e19 100644 (file)
@@ -320,13 +320,18 @@ FACE's list property `theme-face' \(using `custom-push-theme')."
            (let ((face (nth 0 entry))
                  (spec (nth 1 entry))
                  (now (nth 2 entry))
-                 (comment (nth 3 entry)))
+                 (comment (nth 3 entry))
+                 oldspec)
              ;; If FACE is actually an alias, customize the face it
              ;; is aliased to.
              (if (get face 'face-alias)
                  (setq face (get face 'face-alias)))
-             (put face 'saved-face spec)
-             (put face 'saved-face-comment comment)
+
+             (setq oldspec (get face 'theme-face))
+             (when (not (and oldspec (eq 'user (caar oldspec))))
+               (put face 'saved-face spec)
+               (put face 'saved-face-comment comment))
+
              (custom-push-theme 'theme-face face theme 'set spec)
              (when (or now immediate)
                (put face 'force-face (if now 'rogue 'immediate)))
index 0c6085c714fc2098413fc8b2a6f0de162c79e537..b2a9ba6443ce8dff77663e7960c491e3e1908452 100644 (file)
@@ -1120,9 +1120,14 @@ See `custom-theme-load-themes' for more information on BODY."
 (defun enable-theme (theme)
   "Reenable all variable and face settings defined by THEME.
 The newly enabled theme gets the highest precedence (after `user').
-If it is already enabled, just give it highest precedence (after `user')."
+If it is already enabled, just give it highest precedence (after `user').
+
+This signals an error if THEME does not specify any theme
+settings.  Theme settings are set using `load-theme'."
   (interactive "SEnable Custom theme: ")
   (let ((settings (get theme 'theme-settings)))
+    (if (and (not (eq theme 'user)) (null settings))
+       (error "No theme settings defined in %s." (symbol-name theme)))
     (dolist (s settings)
       (let* ((prop (car s))
             (symbol (cadr s))
@@ -1130,7 +1135,8 @@ If it is already enabled, just give it highest precedence (after `user')."
        (put symbol prop (cons (cddr s) (assq-delete-all theme spec-list)))
        (if (eq prop 'theme-value)
            (custom-theme-recalc-variable symbol)
-         (custom-theme-recalc-face symbol)))))
+         (if (facep symbol)
+             (custom-theme-recalc-face symbol))))))
   (setq custom-enabled-themes
         (cons theme (delq theme custom-enabled-themes)))
   ;; `user' must always be the highest-precedence enabled theme.