]> git.eshelyaron.com Git - emacs.git/commitdiff
Insert symbol `debug' into two condition-case handlers
authorAlan Mackenzie <acm@muc.de>
Wed, 20 Sep 2023 15:51:17 +0000 (15:51 +0000)
committerAlan Mackenzie <acm@muc.de>
Wed, 20 Sep 2023 15:51:17 +0000 (15:51 +0000)
This fixes bug#65622.  Also correct a mismatch between a
function to which advice is added, and that from which it is
removed.

* lisp/emacs-lisp/macroexp.el (internal-macroexpand-for-load):
Add a `debug' to the condition-case handler for `error', so
that a useful backtrace will be produced on a macro expansion
error.

* lisp/progmodes/elisp-mode.el (elisp--local-variables): Add
`debug' to a condition-case handler, as above.  In the
advice-remove call, give the same function, macroexpand-1, as
in the corresponding advice-add call.

lisp/emacs-lisp/macroexp.el
lisp/progmodes/elisp-mode.el

index b21f0f0d47f3d3e209a24ae10f59c80d0833ca04..f96e0d74026828dbe7b5764022a17f7fc71e8dd5 100644 (file)
@@ -812,7 +812,7 @@ test of free variables in the following ways:
           (if full-p
               (macroexpand--all-toplevel form)
             (macroexpand form)))
-      (error
+      ((debug error)
        ;; Hopefully this shouldn't happen thanks to the cycle detection,
        ;; but in case it does happen, let's catch the error and give the
        ;; code a chance to macro-expand later.
index 8a12a154f722fd254f76331bec29efb023a8e8c8..664299df288c82611ab47c8542fece2198facd3c 100644 (file)
@@ -456,14 +456,14 @@ use of `macroexpand-all' as a way to find the \"underlying raw code\".")
               (lambda (expander form &rest args)
                 (condition-case err
                     (apply expander form args)
-                  (error (message "Ignoring macroexpansion error: %S" err)
-                         form))))
+                  ((debug error)
+                   (message "Ignoring macroexpansion error: %S" err) form))))
              (sexp
               (unwind-protect
                   (let ((warning-minimum-log-level :emergency))
                     (advice-add 'macroexpand-1 :around macroexpand-advice)
                     (macroexpand-all sexp elisp--local-macroenv))
-                (advice-remove 'macroexpand macroexpand-advice)))
+                (advice-remove 'macroexpand-1 macroexpand-advice)))
              (vars (elisp--local-variables-1 nil sexp)))
         (delq nil
               (mapcar (lambda (var)