# HG changeset patch # User Chong Yidong # Date 1132941610 0 # Node ID 6e41569f62c87262dbaeeb3a7da7b1f028385f69 # Parent d0c771d4e1572d05d609703d7af24623c114aa28 * 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. diff -r d0c771d4e157 -r 6e41569f62c8 lisp/ChangeLog --- a/lisp/ChangeLog Fri Nov 25 17:57:06 2005 +0000 +++ b/lisp/ChangeLog Fri Nov 25 18:00:10 2005 +0000 @@ -1,5 +1,11 @@ 2005-11-25 Chong Yidong + * 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. diff -r d0c771d4e157 -r 6e41569f62c8 lisp/cus-face.el --- a/lisp/cus-face.el Fri Nov 25 17:57:06 2005 +0000 +++ b/lisp/cus-face.el Fri Nov 25 18:00:10 2005 +0000 @@ -320,13 +320,18 @@ (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))) diff -r d0c771d4e157 -r 6e41569f62c8 lisp/custom.el --- a/lisp/custom.el Fri Nov 25 17:57:06 2005 +0000 +++ b/lisp/custom.el Fri Nov 25 18:00:10 2005 +0000 @@ -1120,9 +1120,14 @@ (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 @@ (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.