Function: byte-compile-close-variables
byte-compile-close-variables is a macro defined in bytecomp.el.gz.
Signature
(byte-compile-close-variables &rest BODY)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/bytecomp.el.gz
(defmacro byte-compile-close-variables (&rest body)
(declare (debug t))
`(let (;;
;; Close over these variables to encapsulate the
;; compilation state
;;
(byte-compile-macro-environment
;; Copy it because the compiler may patch into the
;; macroenvironment.
(copy-alist byte-compile-initial-macro-environment))
(byte-compile--outbuffer nil)
(overriding-plist-environment nil)
(byte-compile-function-environment nil)
(byte-compile-bound-variables nil)
(byte-compile-lexical-variables nil)
(byte-compile-const-variables nil)
(byte-compile-free-references nil)
(byte-compile-free-assignments nil)
;;
;; Close over these variables so that `byte-compiler-options'
;; can change them on a per-file basis.
;;
(byte-compile-verbose byte-compile-verbose)
(byte-optimize byte-optimize)
(byte-compile-dynamic byte-compile-dynamic)
(byte-compile-dynamic-docstrings
byte-compile-dynamic-docstrings)
;; (byte-compile-generate-emacs19-bytecodes
;; byte-compile-generate-emacs19-bytecodes)
(byte-compile-warnings byte-compile-warnings)
;; Indicate that we're not currently loading some file.
;; This is used in `macroexp-file-name' to make sure that
;; loading file A which does (byte-compile-file B) won't
;; cause macro calls in B to think they come from A.
(current-load-list (list nil))
)
(prog1
(progn ,@body)
(when byte-native-compiling
(setq byte-to-native-plist-environment
overriding-plist-environment)))))