From e335f09e0ed1735d4a0f03079db5ba2f6ac5bf59 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 25 Nov 2005 18:00:10 +0000 Subject: [PATCH] * 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. --- lisp/ChangeLog | 6 ++++++ lisp/cus-face.el | 11 ++++++++--- lisp/custom.el | 10 ++++++++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0d2a8503fbd..1f53f5ec12c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/cus-face.el b/lisp/cus-face.el index 8a6e77f9805..66713c28661 100644 --- a/lisp/cus-face.el +++ b/lisp/cus-face.el @@ -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))) diff --git a/lisp/custom.el b/lisp/custom.el index 0c6085c714f..b2a9ba6443c 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -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. -- 2.39.5