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