]> git.eshelyaron.com Git - emacs.git/commitdiff
Add 'native-compile-directory' (bug#73303)
authorAndrea Corallo <acorallo@gnu.org>
Tue, 22 Oct 2024 15:46:44 +0000 (17:46 +0200)
committerEshel Yaron <me@eshelyaron.com>
Tue, 22 Oct 2024 19:03:29 +0000 (21:03 +0200)
* lisp/emacs-lisp/comp.el (native-compile-directory): New function.
* etc/NEWS (native-compile-directory): Add to NEWS.

(cherry picked from commit 246d68bd2a5468bd428a0406402e7ad2b3005314)

etc/NEWS
lisp/emacs-lisp/comp.el

index 48f042f762046dd65c3d6d0ca971c7d59bd66c2a..53f181209fa526cd6522980267497edeaeae9294 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -563,6 +563,11 @@ sup-mouse.el, terminal.el, vi.el, vip.el, ws-mode.el, and yow.el.
 \f
 * Lisp Changes in Emacs 31.1
 
+---
+** New function 'native-compile-directory'.
+This function native compiles all Lisp files in a directory and in its
+sub-directories (if they are not already native compiled).
+
 +++
 ** The 'defcustom' :local keyword can now be 'permanent-only'.
 This means that the variable's 'permanent-local' property is set to t,
index fc87014202c27ca70ea3efc232af4513b12853ee..8866f47aa66c7e4adbb42f97680c6f4774346a89 100644 (file)
@@ -3662,6 +3662,17 @@ the compilation was successful return the compiled function."
                             (or native-comp-function string))))
   (comp--native-compile function-or-file nil output))
 
+;;;###autoload
+(defun native-compile-directory (directory)
+  "Native compile if necessary all the .el files present in DIRECTORY.
+Each .el file is native compiled if the corresponding .eln file is not
+found inside the current `native-comp-eln-load-path'. The search within
+DIRECTORY is perfomed recursively."
+  (mapc (lambda (file)
+         (unless (comp-lookup-eln file)
+           (native-compile file)))
+       (directory-files-recursively directory ".+\\.el\\'")))
+
 ;;;###autoload
 (defun batch-native-compile (&optional for-tarball)
   "Perform batch native compilation of remaining command-line arguments.