unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
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


  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).