Commit a416b892 authored by Juri Linkov's avatar Juri Linkov
Browse files


Set `saved-face' temporarily to nil before calling form.
Set `customized-face' to the new spec after that.
parent e44d251c
......@@ -617,10 +617,23 @@ Reinitialize the face according to the `defface' specification."
;; `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))
(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)))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment