From: Stefan Kangas <stefan@marxist.se>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 38072@debbugs.gnu.org, pogonyshev@gmail.com,
monnier@iro.umontreal.ca, akrl@sdf.org
Subject: bug#38072: when `byte-compile-file' finds out that a file is `no-byte-compile', it ignores `load' parameter
Date: Mon, 21 Sep 2020 22:30:30 +0000 [thread overview]
Message-ID: <CADwFkmk0GyH+6wb9gqVU2ZkPhc7fH7sgtZPP1cN-6ZvrJkK4Zw@mail.gmail.com> (raw)
In-Reply-To: <83y2ldbug9.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 13 Sep 2020 17:52:06 +0300")
[-- Attachment #1: Type: text/plain, Size: 441 bytes --]
Eli Zaretskii <eliz@gnu.org> writes:
>> So I agree with Stefan M that the prefix argument should be deprecated.
>> Do we have a process for that or should it just be removed?
>
> We cannot just remove it. We should document that it's deprecated and
> use advertised-calling-convention to advertise the signature without
> it (which will also produce a warning about using the argument in some
> situations).
How about the attached patch?
[-- Attachment #2: 0001-byte-compile-file-Make-optional-LOAD-argument-obsole.patch --]
[-- Type: text/x-diff, Size: 7646 bytes --]
From 55df696bc3fd3401e50657173e627d2e1a4de6d1 Mon Sep 17 00:00:00 2001
From: Stefan Kangas <stefan@marxist.se>
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.
+
\f
* 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
next prev parent reply other threads:[~2020-09-21 22:30 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-05 20:58 bug#38072: when `byte-compile-file' finds out that a file is `no-byte-compile', it ignores `load' parameter Paul Pogonyshev
2020-09-05 0:30 ` Stefan Kangas
2020-09-05 6:21 ` Eli Zaretskii
2020-09-05 15:26 ` Stefan Monnier
2020-09-07 16:37 ` Stefan Kangas
2020-09-07 16:44 ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-13 13:06 ` Stefan Kangas
2020-09-13 14:52 ` Eli Zaretskii
2020-09-21 22:30 ` Stefan Kangas [this message]
2020-09-22 2:28 ` Eli Zaretskii
2020-10-20 16:56 ` Stefan Kangas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CADwFkmk0GyH+6wb9gqVU2ZkPhc7fH7sgtZPP1cN-6ZvrJkK4Zw@mail.gmail.com \
--to=stefan@marxist.se \
--cc=38072@debbugs.gnu.org \
--cc=akrl@sdf.org \
--cc=eliz@gnu.org \
--cc=monnier@iro.umontreal.ca \
--cc=pogonyshev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).