From 55df696bc3fd3401e50657173e627d2e1a4de6d1 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Tue, 22 Sep 2020 00:16:22 +0200 Subject: [PATCH] byte-compile-file: Make optional LOAD argument obsolete * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Declare optional LOAD argument obsolete. Adjust callers. (Bug#38072) (byte-recompile-file): Declare optional LOAD argument obsolete. * doc/lispref/compile.texi (Compilation Functions): Update documentation to reflect above obsoletion. * etc/NEWS: Announce above obsoletion. --- doc/lispref/compile.texi | 5 +---- etc/NEWS | 4 ++++ lisp/emacs-lisp/bytecomp.el | 17 +++++++++-------- lisp/org/org.el | 3 ++- lisp/progmodes/elisp-mode.el | 3 ++- lisp/speedbar.el | 2 +- test/lisp/emacs-lisp/bytecomp-tests.el | 7 ++++--- 7 files changed, 23 insertions(+), 18 deletions(-) diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index e979fda41e..ad8afaae60 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -164,7 +164,7 @@ Compilation Functions in the current buffer after the form it has compiled. @end deffn -@deffn Command byte-compile-file filename &optional load +@deffn Command byte-compile-file filename This function compiles a file of Lisp code named @var{filename} into a file of byte-code. The output file's name is made by changing the @samp{.el} suffix into @samp{.elc}; if @var{filename} does not end in @@ -180,9 +180,6 @@ Compilation Functions This command returns @code{t} if there were no errors and @code{nil} otherwise. When called interactively, it prompts for the file name. -If @var{load} is non-@code{nil}, this command loads the compiled file -after compiling it. Interactively, @var{load} is the prefix argument. - @example @group $ ls -l push* diff --git a/etc/NEWS b/etc/NEWS index 6bfe45a683..5d9e6e7e2e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1264,6 +1264,10 @@ since the latter uses 'M-s' as a prefix key of the search prefix map. ** 'vc-print-branch-log' shows the change log for BRANCH from its root directory instead of the default directory. +** `byte-compile-file' optional argument LOAD is now obsolete. +To load the file after byte-compiling, add a call to 'load' from Lisp +or use 'M-x emacs-lisp-byte-compile-and-load' interactively. + * Incompatible Lisp Changes in Emacs 28.1 diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 966990bac9..2968080afc 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1822,7 +1822,7 @@ no-byte-compile \;; Local Variables:\n;; no-byte-compile: t\n;; End: ") ;Backslash for compile-main. ;;;###autoload(put 'no-byte-compile 'safe-local-variable 'booleanp) -(defun byte-recompile-file (filename &optional force arg load) +(defun byte-recompile-file (filename &optional force arg obsolete) "Recompile FILENAME file if it needs recompilation. This happens when its `.elc' file is older than itself. @@ -1836,10 +1836,9 @@ byte-recompile-file the input file even if the `.elc' file does not exist. Any other non-nil value of ARG means to ask the user. -If optional argument LOAD is non-nil, loads the file after compiling. - If compilation is needed, this functions returns the result of `byte-compile-file'; otherwise it returns `no-byte-compile'." + (declare (advertised-calling-convention (filename &optional force arg) "28.1")) (interactive (let ((file buffer-file-name) (file-name nil) @@ -1868,8 +1867,10 @@ byte-recompile-file (progn (if (and noninteractive (not byte-compile-verbose)) (message "Compiling %s..." filename)) - (byte-compile-file filename load)) - (when load + (byte-compile-file filename) + (when obsolete + (load (if (file-exists-p dest) dest filename)))) + (when obsolete (load (if (file-exists-p dest) dest filename))) 'no-byte-compile))) @@ -1877,12 +1878,12 @@ byte-compile-level "Depth of a recursive byte compilation.") ;;;###autoload -(defun byte-compile-file (filename &optional load) +(defun byte-compile-file (filename &optional obsolete) "Compile a file of Lisp code named FILENAME into a file of byte code. The output file's name is generated by passing FILENAME to the function `byte-compile-dest-file' (which see). -With prefix arg (noninteractively: 2nd arg), LOAD the file after compiling. The value is non-nil if there were no errors, nil if errors." + (declare (advertised-calling-convention (filename) "28.1")) ;; (interactive "fByte compile file: \nP") (interactive (let ((file buffer-file-name) @@ -2035,7 +2036,7 @@ byte-compile-file filename)))) (save-excursion (display-call-tree filename))) - (if load + (if obsolete (load target-file)) t)))) diff --git a/lisp/org/org.el b/lisp/org/org.el index f1a7f61a9a..3c2df4e31e 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -223,7 +223,8 @@ org-babel-load-file (org-babel-tangle-file file tangled-file "emacs-lisp")) (if compile (progn - (byte-compile-file tangled-file 'load) + (byte-compile-file tangled-file) + (load tangled-file) (message "Compiled and loaded %s" tangled-file)) (load-file tangled-file) (message "Loaded %s" tangled-file)))) diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index b4803687b5..f5f39f76a3 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -196,7 +196,8 @@ emacs-lisp-byte-compile-and-load (if (and (buffer-modified-p) (y-or-n-p (format "Save buffer %s first? " (buffer-name)))) (save-buffer)) - (byte-recompile-file buffer-file-name nil 0 t)) + (byte-recompile-file buffer-file-name nil 0) + (load buffer-file-name)) (defun emacs-lisp-macroexpand () "Macroexpand the form after point. diff --git a/lisp/speedbar.el b/lisp/speedbar.el index aab6a3a128..9c5f028e4a 100644 --- a/lisp/speedbar.el +++ b/lisp/speedbar.el @@ -1392,7 +1392,7 @@ speedbar-item-byte-compile (if (and (file-exists-p f) (string-match "\\.el\\'" f)) (progn (dframe-select-attached-frame speedbar-frame) - (byte-compile-file f nil) + (byte-compile-file f) (select-frame sf) (speedbar-reset-scanners))) )) diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index a9dcf15261..ea5aacd791 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -444,8 +444,8 @@ test-byte-comp-compile-and-load (if compile (let ((byte-compile-dest-file-function (lambda (e) elcfile))) - (byte-compile-file elfile t)) - (load elfile nil 'nomessage))) + (byte-compile-file elfile))) + (load elfile nil 'nomessage)) (when elfile (delete-file elfile)) (when elcfile (delete-file elcfile))))) (put 'test-byte-comp-compile-and-load 'lisp-indent-function 1) @@ -646,7 +646,8 @@ bytecomp-tests-function-put (setq bytecomp-tests--foobar (bytecomp-tests--foobar)))) (print form (current-buffer))) (write-region (point-min) (point-max) source nil 'silent) - (byte-compile-file source t) + (byte-compile-file source) + (load source) (should (equal bytecomp-tests--foobar (cons 1 2))))) (ert-deftest bytecomp-tests--test-no-warnings-with-advice () -- 2.28.0