[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