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