[slime-cvs] CVS slime
CVS User heller
heller at common-lisp.net
Sat Nov 22 15:14:51 UTC 2008
Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv14640
Modified Files:
ChangeLog slime.el swank.lisp
Log Message:
* swank.lisp (invoke-default-debugger): New condition type.
(swank-debugger-hook): Handle invoke-default-debugger conditions.
(sldb-break-with-default-debugger): Signal invoke-default-debugger
to transfer control to the default debugger.
New argument DONT-UNWIND to invoke the native debugger without
unwinding the stack.
* slime.el (sldb-break-with-default-debugger): By default,
unwind the stack before invoke the native debugger.
With prefix argument, run the native debugger in the
dynamic environment of SLDB.
--- /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:14:41 1.1582
+++ /project/slime/cvsroot/slime/ChangeLog 2008/11/22 15:14:50 1.1583
@@ -1,3 +1,16 @@
+2008-11-22 Helmut Eller <heller at common-lisp.net>
+
+ * swank.lisp (invoke-default-debugger): New condition type.
+ (swank-debugger-hook): Handle invoke-default-debugger conditions.
+ (sldb-break-with-default-debugger): Signal invoke-default-debugger
+ to transfer control to the default debugger.
+ New argument DONT-UNWIND to invoke the native debugger without
+ unwinding the stack.
+ * slime.el (sldb-break-with-default-debugger): By default,
+ unwind the stack before invoke the native debugger.
+ With prefix argument, run the native debugger in the
+ dynamic environment of SLDB.
+
2008-11-02 Helmut Eller <heller at common-lisp.net>
* slime.el ([test] package-updating): Allegro returns "||" as
--- /project/slime/cvsroot/slime/slime.el 2008/11/22 15:14:41 1.1061
+++ /project/slime/cvsroot/slime/slime.el 2008/11/22 15:14:51 1.1062
@@ -7370,11 +7370,13 @@
(sldb-invoke-restart (position restart-name sldb-restarts
:test 'string= :key 'first)))
-(defun sldb-break-with-default-debugger ()
+(defun sldb-break-with-default-debugger (&optional dont-unwind)
"Enter default debugger."
- (interactive)
+ (interactive "P")
(slime-rex ()
- ('(swank:sldb-break-with-default-debugger) nil slime-current-thread)
+ ((list 'swank:sldb-break-with-default-debugger
+ (not (not dont-unwind)))
+ nil slime-current-thread)
((:abort))))
(defun sldb-step ()
--- /project/slime/cvsroot/slime/swank.lisp 2008/11/02 12:05:13 1.609
+++ /project/slime/cvsroot/slime/swank.lisp 2008/11/22 15:14:51 1.610
@@ -2157,11 +2157,15 @@
(with-connection ((default-connection))
(debug-in-emacs condition))))))
+(define-condition invoke-default-debugger () ())
(defun swank-debugger-hook (condition hook)
"Debugger function for binding *DEBUGGER-HOOK*."
(declare (ignore hook))
- (call-with-debugger-hook #'swank-debugger-hook
- (lambda () (invoke-slime-debugger condition))))
+ (handler-case
+ (call-with-debugger-hook #'swank-debugger-hook
+ (lambda () (invoke-slime-debugger condition)))
+ (invoke-default-debugger ()
+ (invoke-default-debugger condition))))
(defun invoke-default-debugger (condition)
(let ((*debugger-hook* nil))
@@ -2277,12 +2281,12 @@
;;;;; SLDB entry points
-(defslimefun sldb-break-with-default-debugger ()
+(defslimefun sldb-break-with-default-debugger (dont-unwind)
"Invoke the default debugger."
- (call-with-debugger-hook
- nil (lambda () (invoke-debugger *swank-debugger-condition*)))
- (send-to-emacs
- (list :debug-activate (current-thread-id) *sldb-level* t)))
+ (cond (dont-unwind
+ (invoke-default-debugger *swank-debugger-condition*))
+ (t
+ (signal 'invoke-default-debugger))))
(defslimefun backtrace (start end)
"Return a list ((I FRAME PLIST) ...) of frames from START to END.
More information about the slime-cvs
mailing list