You can natively-compile either a single function or macro
definition, or a whole file of Lisp code, with the
@code{native-compile} function. Natively-compiling a file will
-produce both the corresponding @file{.elc} file with byte code and the
-@file{.eln} file with native code.
+produce the @file{.eln} file with native code.
@findex native-comp-limple-mode
@vindex native-comp-verbose
Variables}).
@end defun
+@deffn Command emacs-lisp-native-compile
+This command compiles the file visited by the current buffer into
+native code, if the file was changed since the last time it was
+natively-compiled.
+@end deffn
+
+@deffn Command emacs-lisp-native-compile-and-load
+This command compiles the file visited by the current buffer into
+native code, like @code{emacs-lisp-native-compile}, but it also loads
+the native code when the compilation finishes.
+@end deffn
+
The following function allows Lisp programs to test whether
native-compilation is available at runtime.
["Byte-recompile Directory..." byte-recompile-directory
:help "Recompile every `.el' file in DIRECTORY that needs recompilation"]
["Native-compile This File" emacs-lisp-native-compile
- :help "Compile the current file containing the current buffer to native code"
+ :help "Compile this buffer's file to native code"
:active (native-comp-available-p)]
["Native-compile and Load" emacs-lisp-native-compile-and-load
- :help "Compile the current file to native code, then load compiled native code"
+ :help "Compile this buffer's file to native code, then load compiled native code"
:active (native-comp-available-p)]
["Disassemble Byte Compiled Object..." disassemble
:help "Print disassembled code for OBJECT in a buffer"]
(declare-function comp-write-bytecode-file "comp")
(defun emacs-lisp-native-compile ()
- "Native-compile synchronously the current file (if it has changed)."
+ "Native-compile the current buffer's file (if it has changed).
+This invokes a synchronous native-compilation of the file that is
+visited by the current buffer."
(interactive nil emacs-lisp-mode)
(emacs-lisp--before-compile-buffer)
(let* ((byte+native-compile t)
(comp-write-bytecode-file eln))))
(defun emacs-lisp-native-compile-and-load ()
- "Native-compile synchronously the current file (if it has changed).
-Load the compiled code when finished.
+ "Native-compile the current buffer's file (if it has changed), then load it.
+This invokes a synchronous native-compilation of the file that is
+visited by the current buffer, then loads the compiled native code
+when the compilation is finished.
Use `emacs-lisp-byte-compile-and-load' in combination with
`native-comp-jit-compilation' set to t to achieve asynchronous
-native compilation."
+native compilation of the current buffer's file."
(interactive nil emacs-lisp-mode)
(when-let ((byte-file (emacs-lisp-native-compile)))
(load (file-name-sans-extension byte-file))))