(debug--early): Avoid re-entering the debugger for the same error
Fixes bug#76787. * lisp/emacs-lisp/debug.el (debugger--last-error): Move ... * lisp/emacs-lisp/debug-early.el (debugger--last-error): ... here. (debug--early): Use it.
This commit is contained in:
parent
4719df9f42
commit
fb33e3b4c7
2 changed files with 13 additions and 8 deletions
|
@ -36,6 +36,8 @@
|
|||
;; For bootstrap reasons, we cannot use any macros here since they're
|
||||
;; not defined yet.
|
||||
|
||||
(defvar debugger--last-error nil)
|
||||
|
||||
(defalias 'debug-early-backtrace
|
||||
#'(lambda (&optional base)
|
||||
"Print a trace of Lisp function calls currently active.
|
||||
|
@ -76,15 +78,20 @@ of the build process."
|
|||
(setq args (cdr args)))
|
||||
(princ " ")))
|
||||
(princ ")\n"))))
|
||||
base))))
|
||||
base))
|
||||
(message "debug-early-backtrace...done")))
|
||||
|
||||
(defalias 'debug--early
|
||||
#'(lambda (error base)
|
||||
(princ "\nError: ")
|
||||
(prin1 (car error)) ; The error symbol.
|
||||
(princ " ")
|
||||
(prin1 (cdr error)) ; The error data.
|
||||
(debug-early-backtrace base)))
|
||||
(if (eq error debugger--last-error) nil
|
||||
(setq debugger--last-error nil)
|
||||
(princ "\nError: ")
|
||||
(prin1 (car error)) ; The error symbol.
|
||||
(princ " ")
|
||||
(prin1 (cdr error)) ; The error data.
|
||||
(prog1 ;; Purposefully not `unwind-protect'!
|
||||
(debug-early-backtrace base)
|
||||
(setq debugger--last-error error)))))
|
||||
|
||||
(defalias 'debug-early ;Called from C.
|
||||
#'(lambda (&rest args)
|
||||
|
|
|
@ -153,8 +153,6 @@ where CAUSE can be:
|
|||
(insert (debugger--buffer-state-content state)))
|
||||
(goto-char (debugger--buffer-state-pos state)))
|
||||
|
||||
(defvar debugger--last-error nil)
|
||||
|
||||
(defun debugger--duplicate-p (args)
|
||||
(pcase args
|
||||
(`(error ,err . ,_) (and (consp err) (eq err debugger--last-error)))))
|
||||
|
|
Loading…
Add table
Reference in a new issue