Mercurial > emacs
changeset 63638:83144542b6da
(eval-defun-1):
Set `saved-face' temporarily to nil before calling form.
Set `customized-face' to the new spec after that.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Tue, 21 Jun 2005 15:59:33 +0000 |
parents | de897c139738 |
children | da180163f2f6 |
files | lisp/emacs-lisp/lisp-mode.el |
diffstat | 1 files changed, 15 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/lisp-mode.el Tue Jun 21 15:59:12 2005 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Tue Jun 21 15:59:33 2005 +0000 @@ -617,10 +617,23 @@ ;; `defface' is macroexpanded to `custom-declare-face'. ((eq (car form) 'custom-declare-face) ;; Reset the face. - (put (eval (nth 1 form)) 'face-defface-spec nil) (setq face-new-frame-defaults (assq-delete-all (eval (nth 1 form)) face-new-frame-defaults)) - form) + (put (eval (nth 1 form)) 'face-defface-spec nil) + ;; Setting `customized-face' to the new spec after calling + ;; the form, but preserving the old saved spec in `saved-face', + ;; imitates the situation when the new face spec is set + ;; temporarily for the current session in the customize + ;; buffer, thus allowing `face-user-default-spec' to use the + ;; new customized spec instead of the saved spec. + ;; Resetting `saved-face' temporarily to nil is needed to let + ;; `defface' change the spec, regardless of a saved spec. + (prog1 `(prog1 ,form + (put ',(eval (nth 1 form)) 'saved-face + ',(get (eval (nth 1 form)) 'saved-face)) + (put ',(eval (nth 1 form)) 'customized-face + ',(eval (nth 2 form)))) + (put (eval (nth 1 form)) 'saved-face nil))) ((eq (car form) 'progn) (cons 'progn (mapcar 'eval-defun-1 (cdr form)))) (t form)))