Mercurial > emacs
changeset 56003:9650d55ad73d
(eval-defun-1): Add `defface'. Fix docstring.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Thu, 10 Jun 2004 04:16:05 +0000 |
parents | 80100e7e948a |
children | 397f87132b70 |
files | lisp/emacs-lisp/lisp-mode.el |
diffstat | 1 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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)