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.

View in manual

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) lexical-binding)))