[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master dcb8658: * lisp/emacs-lisp/debug.el: Don't bail on
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master dcb8658: * lisp/emacs-lisp/debug.el: Don't bail on errors inside cl-print |
Date: |
Fri, 13 Oct 2017 22:45:48 -0400 (EDT) |
branch: master
commit dcb86584fd12fc44d246bbe033372693785c127d
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* lisp/emacs-lisp/debug.el: Don't bail on errors inside cl-print
(debugger--print): New function.
(debugger-insert-backtrace, debugger-setup-buffer): Use it.
---
lisp/emacs-lisp/debug.el | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 0247179..473ead1 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -270,6 +270,12 @@ first will be printed into the backtrace buffer."
(setq debug-on-next-call debugger-step-after-exit)
debugger-value)))
+(defun debugger--print (obj &optional stream)
+ (condition-case err
+ (funcall debugger-print-function obj stream)
+ (error
+ (message "Error in debug printer: %S" err)
+ (prin1 obj stream))))
(defun debugger-insert-backtrace (frames do-xrefs)
"Format and insert the backtrace FRAMES at point.
@@ -284,10 +290,10 @@ Make functions into cross-reference buttons if DO-XREFS
is non-nil."
(fun-pt (point)))
(cond
((and evald (not debugger-stack-frame-as-list))
- (funcall debugger-print-function fun)
- (if args (funcall debugger-print-function args) (princ "()")))
+ (debugger--print fun)
+ (if args (debugger--print args) (princ "()")))
(t
- (funcall debugger-print-function (cons fun args))
+ (debugger--print (cons fun args))
(cl-incf fun-pt)))
(when fun-file
(make-text-button fun-pt (+ fun-pt (length (symbol-name fun)))
@@ -333,7 +339,7 @@ That buffer should be current already."
(insert "--returning value: ")
(setq pos (point))
(setq debugger-value (nth 1 args))
- (funcall debugger-print-function debugger-value (current-buffer))
+ (debugger--print debugger-value (current-buffer))
(setf (cl-getf (nth 3 (car frames)) :debug-on-exit) nil)
(insert ?\n))
;; Watchpoint triggered.
@@ -358,7 +364,7 @@ That buffer should be current already."
(`error
(insert "--Lisp error: ")
(setq pos (point))
- (funcall debugger-print-function (nth 1 args) (current-buffer))
+ (debugger--print (nth 1 args) (current-buffer))
(insert ?\n))
;; debug-on-call, when the next thing is an eval.
(`t
@@ -368,7 +374,7 @@ That buffer should be current already."
(_
(insert ": ")
(setq pos (point))
- (funcall debugger-print-function
+ (debugger--print
(if (eq (car args) 'nil)
(cdr args) args)
(current-buffer))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master dcb8658: * lisp/emacs-lisp/debug.el: Don't bail on errors inside cl-print,
Stefan Monnier <=