[slime-devel] alternative SLIME-DEBUGGER-HOOK

Madhu enometh at meer.net
Mon Aug 25 08:34:12 UTC 2008

The new SLIME debugger always reports a "Use Default Debugger" restart
as restart 0.  This is confusing to my muscle memory which has been
trained to 0 for the first restart expected from the lisp program
being evaluated.  Also, almost always, I never wish to invoke the
native debugger from [or vice versa for which I set set
swank:*global-debugger* to nil when my lisp is running outside Emacs
or has its own IDE.]

If nobody is using this option, or it was introduced for debugging
slime, it may be better to turn it off.

An `invoke native debugger' restart may be useful in the case where
invoke-slime-debugger signals an error.  That code is more complex.
The following patch introducing a global, is ugly. 

diff --git a/swank.lisp b/swank.lisp
index 058663c..450ad6b 100644
--- a/swank.lisp
+++ b/swank.lisp
@@ -2065,14 +2065,21 @@ after Emacs causes a restart to be invoked."
            (with-connection ((default-connection))
              (debug-in-emacs condition))))))
+(defvar *swank-default-debugger-restart* nil)
 (defun swank-debugger-hook (condition hook)
   "Debugger function for binding *DEBUGGER-HOOK*."
   (declare (ignore hook))
-       #'swank-debugger-hook (lambda () (invoke-slime-debugger condition)))
+         #'swank-debugger-hook
+         (lambda () (invoke-slime-debugger condition)))
     (default-debugger (&optional v)
-      :report "Use default debugger." (declare (ignore v))
+      :report "Use default debugger."
+      :test (lambda (c)
+              (declare (ignore c))
+              *swank-default-debugger-restart*)
+      (declare (ignore v))
       (invoke-default-debugger condition))))
 (defun invoke-default-debugger (condition)

More information about the slime-devel mailing list