Function: cl-eval-when
cl-eval-when is an autoloaded macro defined in cl-macs.el.gz.
Signature
(cl-eval-when (WHEN...) BODY...)
Documentation
Control when BODY is evaluated.
If compile is in WHEN, BODY is evaluated when compiled at top-level.
If load is in WHEN, BODY is evaluated when loaded after top-level compile.
If eval is in WHEN, BODY is evaluated when interpreted or at non-top-level.
Aliases
eval-when (obsolete since 27.1)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/cl-macs.el.gz
;;;###autoload
(defmacro cl-eval-when (when &rest body)
"Control when BODY is evaluated.
If `compile' is in WHEN, BODY is evaluated when compiled at top-level.
If `load' is in WHEN, BODY is evaluated when loaded after top-level compile.
If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level.
\(fn (WHEN...) BODY...)"
(declare (indent 1) (debug (sexp body)))
(if (and (macroexp-compiling-p)
(not cl--not-toplevel) (not (boundp 'for-effect))) ;Horrible kludge.
(let ((comp (or (memq 'compile when) (memq :compile-toplevel when)))
(cl--not-toplevel t))
(if (or (memq 'load when) (memq :load-toplevel when))
(if comp (cons 'progn (mapcar #'cl--compile-time-too body))
`(if nil nil ,@body))
(progn (if comp (eval (cons 'progn body) lexical-binding)) nil)))
(and (or (memq 'eval when) (memq :execute when))
(cons 'progn body))))