[slime-cvs] CVS slime
CVS User heller
heller at common-lisp.net
Sat May 23 16:48:16 UTC 2009
Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv12148
Modified Files:
ChangeLog swank-openmcl.lisp
Log Message:
* swank-openmcl.lisp (break-in-sldb): Honor *break-on-signals*.
That means that we can't use SIGNAL here and we have to invoke
SLDB directly.
(condition-for-break): New helper.
Reported by Bill St. Clair.
--- /project/slime/cvsroot/slime/ChangeLog 2009/05/21 09:41:50 1.1769
+++ /project/slime/cvsroot/slime/ChangeLog 2009/05/23 16:48:16 1.1770
@@ -1,3 +1,11 @@
+2009-05-23 Helmut Eller <heller at common-lisp.net>
+
+ * swank-openmcl.lisp (break-in-sldb): Honor *break-on-signals*.
+ That means that we can't use SIGNAL here and we have to invoke
+ SLDB directly.
+ (condition-for-break): New helper.
+ Reported by Bill St. Clair.
+
2009-05-19 Tobias C. Rittweiler <tcr at freebits.de>
* slime.el (slime-symbol-at-point): Sometimes we can be too good,
--- /project/slime/cvsroot/slime/swank-openmcl.lisp 2009/05/19 09:51:55 1.171
+++ /project/slime/cvsroot/slime/swank-openmcl.lisp 2009/05/23 16:48:16 1.172
@@ -517,19 +517,25 @@
(ccl::apply-in-frame p lfun
(ccl::frame-supplied-args p lfun pc nil context))))
-(let ((ccl::*warn-if-redefine-kernel* nil))
- (ccl::advise
- ccl::cbreak-loop
- (if *break-in-sldb*
- (apply #'break-in-sldb ccl::arglist)
- (:do-it))
- :when :around
- :name sldb-break))
-
-(defun break-in-sldb (x y &rest args)
- (let ((*sldb-stack-top-hint* (or *sldb-stack-top-hint*
- (ccl::%get-frame-ptr))))
- (apply #'cerror y (if args "Break: ~a" x) args)))
+(ccl::advise ccl::cbreak-loop
+ (if *break-in-sldb*
+ (apply #'break-in-sldb ccl::arglist)
+ (:do-it))
+ :when :around
+ :name sldb-break)
+
+(defun break-in-sldb (msg cont-string condition error-pointer)
+ (let ((*sldb-stack-top-hint* error-pointer))
+ (with-simple-restart (continue "~a" cont-string)
+ (funcall (read-from-string "SWANK:INVOKE-SLIME-DEBUGGER")
+ (condition-for-break condition msg)))))
+
+(defun condition-for-break (condition msg)
+ (cond ((and (eq (type-of condition) 'simple-condition)
+ (equal (simple-condition-format-control condition) ""))
+ (make-condition 'simple-condition :format-control "~a"
+ :format-arguments (list msg)))
+ (t condition)))
(defimplementation disassemble-frame (the-frame-number)
(with-frame (p context lfun pc) the-frame-number
More information about the slime-cvs
mailing list