Function: eval-and-compile
eval-and-compile is a macro defined in byte-run.el.gz.
Signature
(eval-and-compile &rest BODY)
Documentation
Like progn, but evaluates the body at compile time and at load time.
In interpreted code, this is entirely equivalent to progn,
except that the value of the expression may be (but is not
necessarily) computed at load time if eager macro expansion is
enabled.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/byte-run.el.gz
(defmacro eval-and-compile (&rest body)
"Like `progn', but evaluates the body at compile time and at load time.
In interpreted code, this is entirely equivalent to `progn',
except that the value of the expression may be (but is not
necessarily) computed at load time if eager macro expansion is
enabled."
(declare (debug (&rest def-form)) (indent 0))
;; When the byte-compiler expands code, this macro is not used, so we're
;; either about to run `body' (plain interpretation) or we're doing eager
;; macroexpansion.
(list 'quote (eval (cons 'progn body)
(when lexical-binding (or macroexp--dynvars t)))))