Function: elisp--eval-defun-1
elisp--eval-defun-1 is a byte-compiled function defined in
elisp-mode.el.gz.
Signature
(elisp--eval-defun-1 FORM)
Documentation
Treat some expressions in FORM specially.
Reset the defvar and defcustom variables to the initial value.
(For defcustom, use the :set function if there is one.)
Reinitialize the face according to the defface specification.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/elisp-mode.el.gz
(defun elisp--eval-defun-1 (form)
"Treat some expressions in FORM specially.
Reset the `defvar' and `defcustom' variables to the initial value.
\(For `defcustom', use the :set function if there is one.)
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 macroexpanded form.
(cond ((not (listp form))
form)
((and (eq (car form) 'defvar)
(cdr-safe (cdr-safe form))
(boundp (cadr form)))
;; Force variable to be re-set.
`(progn (defvar ,(nth 1 form) nil ,@(nthcdr 3 form))
(setq-default ,(nth 1 form) ,(nth 2 form))))
;; `defcustom' is now macroexpanded to
;; `custom-declare-variable' with a quoted value arg.
((and (eq (car form) 'custom-declare-variable)
(default-boundp (eval (nth 1 form) lexical-binding)))
;; Force variable to be bound, using :set function if specified.
(let ((setfunc (memq :set form)))
(when setfunc
(setq setfunc (car-safe (cdr-safe setfunc)))
(or (functionp setfunc) (setq setfunc nil)))
(funcall (or setfunc 'set-default)
(eval (nth 1 form) lexical-binding)
;; The second arg is an expression that evaluates to
;; an expression. The second evaluation is the one
;; normally performed not by normal execution but by
;; custom-initialize-set (for example).
(eval (eval (nth 2 form) lexical-binding) t)))
form)
;; `defface' is macroexpanded to `custom-declare-face'.
((eq (car form) 'custom-declare-face)
;; Reset the face.
(let ((face-symbol (eval (nth 1 form) lexical-binding)))
(remhash face-symbol face--new-frame-defaults)
(put face-symbol 'face-defface-spec nil)
(put face-symbol 'face-override-spec nil))
form)
((eq (car form) 'progn)
(cons 'progn (mapcar #'elisp--eval-defun-1 (cdr form))))
(t form)))