;; 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.
(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)
(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)))))