1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-09 07:40:39 -08:00

Don't enter the debugger from *Backtrace* or edebug on eval errors

* doc/lispref/debugging.texi (Error Debugging): Document it.

* doc/lispref/edebug.texi (Edebug Eval): Mention it.
* lisp/emacs-lisp/debug.el (debug-allow-recursive-debug): New user
option (bug#36145).
(debugger-eval-expression): Use it.

* lisp/emacs-lisp/edebug.el (edebug-eval-expression): Ditto.

This patch is based on a patch by Noam Postavsky.
This commit is contained in:
Lars Ingebrigtsen 2022-05-01 13:40:13 +02:00
parent 81ce4b0e4e
commit 7c8bec9e1f
5 changed files with 47 additions and 5 deletions

View file

@ -90,6 +90,11 @@ The value used here is passed to `quit-restore-window'."
:group 'debugger
:version "24.3")
(defcustom debug-allow-recursive-debug nil
"If non-nil, erroring in debug and edebug won't recursively debug."
:type 'boolean
:version "29.1")
(defvar debugger-step-after-exit nil
"Non-nil means \"single-step\" after the debugger exits.")
@ -534,7 +539,13 @@ The environment used is the one when entering the activation frame at point."
(error 0)))) ;; If on first line.
(base (debugger--backtrace-base)))
(debugger-env-macro
(let ((val (backtrace-eval exp nframe base)))
(let ((val (if debug-allow-recursive-debug
(backtrace-eval exp nframe base)
(condition-case err
(backtrace-eval exp nframe base)
(error (format "%s: %s"
(get (car err) 'error-message)
(car (cdr err))))))))
(prog1
(debugger--print val t)
(let ((str (eval-expression-print-format val)))