unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Jens Schmidt via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: German Pacenza <germanp82@hotmail.com>,
	58396@debbugs.gnu.org, Lars Ingebrigtsen <larsi@gnus.org>,
	Eli Zaretskii <eliz@gnu.org>,
	58148@debbugs.gnu.org
Subject: bug#58396: bug#58148: 29.0.50; Wrong number of arguments in keymap-set--anon-cmacro
Date: Sat, 30 Sep 2023 20:44:55 +0200	[thread overview]
Message-ID: <877co7bivs.fsf_-_@sappc2.fritz.box> (raw)
In-Reply-To: <jwv5y3r4vmq.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Sat, 30 Sep 2023 09:56:09 -0400")

[-- Attachment #1: Type: text/plain, Size: 2039 bytes --]

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> +                  (let ((inhibit-message t)     ;[1]
>> +                        (warning-minimum-log-level :emergency))
>>                      (advice-add 'macroexpand :around macroexpand-advice)
>> -                    (macroexpand-all sexp))
>> +                    (condition-case nil         ;[3]
>> +                        (macroexpand-all sexp)
>> +                      (t sexp)))
>
> This `t` catches more than errors.  Better replace it with `error`.

Done plus Eli's comments from that other branch.

>> -                  (let ((warning-minimum-log-level :emergency))
>> +                  (let ((inhibit-message t)                  ;[1]
>> +                        (macroexp-inhibit-compiler-macros t) ;[2]
>> +                        (warning-minimum-log-level :emergency))
>>                      (advice-add 'macroexpand-1 :around macroexpand-advice)
>> -                    (macroexpand-all sexp elisp--local-macroenv))
>> +                    (condition-case nil         ;[3]
>> +                        (macroexpand-all sexp elisp--local-macroenv)
>> +                      (t sexp)))
>
> What kind of errors are we expecting to catch with this
> `condition-case`?  The pre-existing advice is supposed to catch macro
> expansion errors, and the new let-binding is supposed to catch
> compiler-macro errors, so it seems to me there aren't any *expected*
> errors left.  If so, better remove this `condition-case` (or replace it
> with `with-demoted-errors`) since all it has left to do is to hide any
> real coding error that may come up and that we'd like to be told about.

Done.

FWIW, bug#60081 can also be merged into this one.  (The other bugs that
Zehao mentions in her/his last post are either merged already or
typos/not related to this bug.)  Technically, I should be able to merge
that bug (after having been pointed to admin/notes/bugtracker), but is
it OK for me (as a "plain user") to do so?  Or should someone with more
authority do that?

Thanks.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-29-Silence-macro-expansion-during-completion-at-point.patch --]
[-- Type: text/x-diff, Size: 1664 bytes --]

From f4184086081b9cf94e87848d33b527c35f78ffdf Mon Sep 17 00:00:00 2001
From: Jens Schmidt <jschmidt4gnu@vodafonemail.de>
Date: Tue, 26 Sep 2023 22:26:15 +0200
Subject: [PATCH] Silence macro expansion during completion at point

To keep risk in the current release branch low, do not avoid compiler
macros as suggested by Stefan in the bug, but rather suppress all errors.

* lisp/progmodes/elisp-mode.el (elisp--local-variables): Silence
messages.  Suppress all errors during macro expansion.  (Bug#58148)

Do not merge to master.
---
 lisp/progmodes/elisp-mode.el | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index bd3916ce108..354d98c50dc 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -447,9 +447,14 @@ elisp--local-variables
                                      (error form))))
              (sexp
               (unwind-protect
-                  (let ((warning-minimum-log-level :emergency))
+                  ;; Silence any macro expansion errors when
+                  ;; attempting completion at point (bug#58148).
+                  (let ((inhibit-message t)
+                        (warning-minimum-log-level :emergency))
                     (advice-add 'macroexpand :around macroexpand-advice)
-                    (macroexpand-all sexp))
+                    (condition-case nil
+                        (macroexpand-all sexp)
+                      (error sexp)))
                 (advice-remove 'macroexpand macroexpand-advice)))
              (vars (elisp--local-variables-1 nil sexp)))
         (delq nil
-- 
2.30.2


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-30-Silence-macro-expansion-during-completion-at-point.patch --]
[-- Type: text/x-diff, Size: 2817 bytes --]

From cc954764667e23ecc19ae9cc3fb89956a32289ce Mon Sep 17 00:00:00 2001
From: Jens Schmidt <jschmidt4gnu@vodafonemail.de>
Date: Fri, 29 Sep 2023 22:04:43 +0200
Subject: [PATCH] Silence macro expansion during completion at point

* lisp/emacs-lisp/macroexp.el (macroexp-inhibit-compiler-macros): Add
variable.
(macroexp--compiler-macro): Inspect that new variable and, if it is
non-nil, return the input form unchanged.
* lisp/progmodes/elisp-mode.el (elisp--local-variables): Silence
messages.  Avoid compiler macros.  (Bug#58148)
---
 lisp/emacs-lisp/macroexp.el  | 20 ++++++++++++++------
 lisp/progmodes/elisp-mode.el |  6 +++++-
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index 3ef924a5c73..6eb670d6dc1 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -105,13 +105,21 @@ macroexp--all-clauses
 	(macroexp--all-forms clause skip)
       clause)))
 
+(defvar macroexp-inhibit-compiler-macros nil
+  "Inhibit application of compiler macros if non-nil.")
+
 (defun macroexp--compiler-macro (handler form)
-  (condition-case-unless-debug err
-      (apply handler form (cdr form))
-    (error
-     (message "Warning: Optimization failure for %S: Handler: %S\n%S"
-              (car form) handler err)
-     form)))
+  "Apply compiler macro HANDLER to FORM and return the result.
+Unless `macroexp-inhibit-compiler-macros' is non-nil, in which
+case return FORM unchanged."
+  (if macroexp-inhibit-compiler-macros
+      form
+    (condition-case-unless-debug err
+        (apply handler form (cdr form))
+      (error
+       (message "Warning: Optimization failure for %S: Handler: %S\n%S"
+                (car form) handler err)
+       form))))
 
 (defun macroexp--funcall-if-compiled (_form)
   "Pseudo function used internally by macroexp to delay warnings.
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 664299df288..ff90a744ea3 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -460,7 +460,11 @@ elisp--local-variables
                    (message "Ignoring macroexpansion error: %S" err) form))))
              (sexp
               (unwind-protect
-                  (let ((warning-minimum-log-level :emergency))
+                  ;; Silence any macro expansion errors when
+                  ;; attempting completion at point (bug#58148).
+                  (let ((inhibit-message t)
+                        (macroexp-inhibit-compiler-macros t)
+                        (warning-minimum-log-level :emergency))
                     (advice-add 'macroexpand-1 :around macroexpand-advice)
                     (macroexpand-all sexp elisp--local-macroenv))
                 (advice-remove 'macroexpand-1 macroexpand-advice)))
-- 
2.30.2


  reply	other threads:[~2023-09-30 18:44 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-09 16:20 bug#58396: 29.0.50; Optimization failure for add-to-list German Pacenza
2022-10-10  8:25 ` Lars Ingebrigtsen
2022-10-10  8:34   ` Lars Ingebrigtsen
2022-10-10 14:59     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-11  0:28       ` Lars Ingebrigtsen
2022-10-11  1:53         ` Drew Adams
2022-10-11  3:46         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-11 18:27           ` Lars Ingebrigtsen
2022-10-11 19:13             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-12 10:54               ` Lars Ingebrigtsen
2023-09-26 20:30                 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-26 21:32                   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-26 21:48                     ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-26 22:06                       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-30 10:39                         ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-30 13:56                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-30 18:44                             ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2023-10-05 18:07                               ` bug#60081: bug#58148: 29.0.50; Wrong number of arguments in keymap-set--anon-cmacro Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-03 19:04                             ` bug#58396: 29.0.50; Optimization failure for add-to-list Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-30 14:26                           ` Eli Zaretskii
2023-09-30 18:51                             ` bug#58148: 29.0.50; Wrong number of arguments in keymap-set--anon-cmacro Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-30 18:54                               ` Eli Zaretskii
2023-09-30 22:03                             ` bug#58396: 29.0.50; Optimization failure for add-to-list 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=877co7bivs.fsf_-_@sappc2.fritz.box \
    --to=bug-gnu-emacs@gnu.org \
    --cc=58148@debbugs.gnu.org \
    --cc=58396@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=germanp82@hotmail.com \
    --cc=jschmidt4gnu@vodafonemail.de \
    --cc=larsi@gnus.org \
    --cc=monnier@iro.umontreal.ca \
    /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).