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:
parent
81ce4b0e4e
commit
7c8bec9e1f
5 changed files with 47 additions and 5 deletions
|
|
@ -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)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue