# HG changeset patch # User Juri Linkov # Date 1086840965 0 # Node ID 9650d55ad73df284124ee463be38b78462f06588 # Parent 80100e7e948ad32f81aaddfbccea2d63be335b82 (eval-defun-1): Add `defface'. Fix docstring. diff -r 80100e7e948a -r 9650d55ad73d lisp/emacs-lisp/lisp-mode.el --- a/lisp/emacs-lisp/lisp-mode.el Wed Jun 09 22:05:15 2004 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Thu Jun 10 04:16:05 2004 +0000 @@ -570,8 +570,9 @@ value))) (defun eval-defun-1 (form) - "Change defvar into defconst within FORM. -Likewise for other constructs as necessary." + "Treat some expressions specially. +Reset the `defvar' and `defcustom' variables to the initial value. +Reinitialize the face according to the `defface' specification." ;; The code in edebug-defun should be consistent with this, but not ;; the same, since this gets a macroexpended form. (cond ((not (listp form)) @@ -589,6 +590,13 @@ ;; Force variable to be bound. (set-default (eval (nth 1 form)) (eval (nth 1 (nth 2 form)))) form) + ;; `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) ((eq (car form) 'progn) (cons 'progn (mapcar 'eval-defun-1 (cdr form)))) (t form))) @@ -624,7 +632,7 @@ (setq beg (point)) (setq form (read (current-buffer))) (setq end (point))) - ;; Alter the form if necessary, changing defvar into defconst, etc. + ;; Alter the form if necessary. (setq form (eval-defun-1 (macroexpand form))) (list beg end standard-output `(lambda (ignore)