diff options
Diffstat (limited to 'lisp/emacs-lisp/debug-early.el')
-rw-r--r-- | lisp/emacs-lisp/debug-early.el | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/debug-early.el b/lisp/emacs-lisp/debug-early.el index 48b71e7f9f0..b6fdef00080 100644 --- a/lisp/emacs-lisp/debug-early.el +++ b/lisp/emacs-lisp/debug-early.el @@ -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) |