]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow following symlinks when recompiling directories
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 26 Nov 2020 10:00:35 +0000 (11:00 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 26 Nov 2020 10:00:35 +0000 (11:00 +0100)
* doc/lispref/compile.texi (Compilation Functions): Document it.
* lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Allow
following symlinks (bug#10292).

doc/lispref/compile.texi
etc/NEWS
lisp/emacs-lisp/bytecomp.el

index ad8afaae608b94fa7c9bdb93b6aadee544439fcb..51a4b04486ab0d1c8fbcca7dd3f15168149a48d3 100644 (file)
@@ -199,7 +199,7 @@ $ ls -l push*
 @end example
 @end deffn
 
-@deffn Command byte-recompile-directory directory &optional flag force
+@deffn Command byte-recompile-directory directory &optional flag force follow-symlinks
 @cindex library compilation
 This command recompiles every @samp{.el} file in @var{directory} (or
 its subdirectories) that needs recompilation.  A file needs
@@ -218,6 +218,10 @@ Interactively, @code{byte-recompile-directory} prompts for
 If @var{force} is non-@code{nil}, this command recompiles every
 @samp{.el} file that has a @samp{.elc} file.
 
+This command will normally not compile @samp{.el} files that are
+symlinked.  If the optional @var{follow-symlink} parameter is
+non-@code{nil}, symlinked @samp{.el} will also be compiled.
+
 The returned value is unpredictable.
 @end deffn
 
index e0916f56b874bda05a0092044fdd38ae3a9845cf..2fb33e342e7f19064f4cd34a065c407fd55f5297 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2017,6 +2017,10 @@ to lexical binding, where dynamic (special) variables bound in one
 file can affect code in another.  For details, see the manual section
 "(Elisp) Converting to Lexical Binding".
 
++++
+** 'byte-recompile-directory' can now compile symlinked .el files.
+This is achieved by giving a non-nil FOLLOW-SYMLINKS parameter.
+
 ---
 ** 'unload-feature' now also tries to undo additions to buffer-local hooks.
 
index e6f6a12b53d69ee4ba8babba33b8dd4da796dd76..9ece8ec6f023be44f8fbf0b561f04396330327c9 100644 (file)
@@ -1746,7 +1746,7 @@ Files in subdirectories of DIRECTORY are processed also."
   (byte-recompile-directory directory nil t))
 
 ;;;###autoload
-(defun byte-recompile-directory (directory &optional arg force)
+(defun byte-recompile-directory (directory &optional arg force follow-symlinks)
   "Recompile every `.el' file in DIRECTORY that needs recompilation.
 This happens when a `.elc' file exists but is older than the `.el' file.
 Files in subdirectories of DIRECTORY are processed also.
@@ -1759,7 +1759,11 @@ compile it.  A nonzero ARG also means ask about each subdirectory
 before scanning it.
 
 If the third argument FORCE is non-nil, recompile every `.el' file
-that already has a `.elc' file."
+that already has a `.elc' file.
+
+This command will normally not follow symlinks when compiling
+files.  If FOLLOW-SYMLINKS is non-nil, symlinked `.el' files will
+also be compiled."
   (interactive "DByte recompile directory: \nP")
   (if arg (setq arg (prefix-numeric-value arg)))
   (if noninteractive
@@ -1792,7 +1796,8 @@ that already has a `.elc' file."
             (if (file-directory-p source)
                 (and (not (member file '("RCS" "CVS")))
                      (not (eq ?\. (aref file 0)))
-                     (not (file-symlink-p source))
+                      (or follow-symlinks
+                         (not (file-symlink-p source)))
                      ;; This file is a subdirectory.  Handle them differently.
                      (or (null arg) (eq 0 arg)
                          (y-or-n-p (concat "Check " source "? ")))