[slime-cvs] CVS slime
CVS User sboukarev
sboukarev at common-lisp.net
Wed Sep 22 19:17:35 UTC 2010
Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv15670
Modified Files:
ChangeLog slime.el swank.lisp
Log Message:
* swank.lisp (eval-for-emacs): Send (:abort condition) where
condition is a condition which was aborted instead of just (:abort).
* slime.el: Handle the above change.
* contrib/slime-repl.el: Handle (:abort condition) message from lisp.
--- /project/slime/cvsroot/slime/ChangeLog 2010/09/22 14:53:14 1.2143
+++ /project/slime/cvsroot/slime/ChangeLog 2010/09/22 19:17:35 1.2144
@@ -1,5 +1,11 @@
2010-09-22 Stas Boukarev <stassats at gmail.com>
+ * swank.lisp (eval-for-emacs): Send (:abort condition) where
+ condition is a condition which was aborted instead of just (:abort).
+ * slime.el: Handle the above change.
+
+2010-09-22 Stas Boukarev <stassats at gmail.com>
+
* swank-clisp.lisp (*external-format-to-coding-system*): Remove
stray :latin-1 argument for ext:make-encoding.
Reported by Mirko Vukovic.
--- /project/slime/cvsroot/slime/slime.el 2010/09/18 08:54:01 1.1339
+++ /project/slime/cvsroot/slime/slime.el 2010/09/22 19:17:35 1.1340
@@ -2076,7 +2076,7 @@
CLAUSES is a list of patterns with same syntax as
`destructure-case'. The result of the evaluation of SEXP is
dispatched on CLAUSES. The result is either a sexp of the
-form (:ok VALUE) or (:abort). CLAUSES is executed
+form (:ok VALUE) or (:abort CONDITION). CLAUSES is executed
asynchronously.
Note: don't use backquote syntax for SEXP, because various Emacs
@@ -2158,7 +2158,7 @@
(error "Reply to canceled synchronous eval request tag=%S sexp=%S"
tag sexp))
(throw tag (list #'identity value)))
- ((:abort)
+ ((:abort condition)
(throw tag (list #'error "Synchronous Lisp Evaluation aborted"))))
(let ((debug-on-quit t)
(inhibit-quit nil)
@@ -2176,8 +2176,8 @@
(when cont
(set-buffer buffer)
(funcall cont result)))
- ((:abort)
- (message "Evaluation aborted.")))
+ ((:abort condition)
+ (message "Evaluation aborted on %s." condition)))
;; Guard against arbitrary return values which once upon a time
;; showed up in the minibuffer spuriously (due to a bug in
;; slime-autodoc.) If this ever happens again, returning the
@@ -4082,9 +4082,9 @@
((:ok value)
(run-hooks 'slime-transcript-stop-hook)
(slime-display-eval-result value))
- ((:abort)
+ ((:abort condition)
(run-hooks 'slime-transcript-stop-hook)
- (message "Evaluation aborted."))))
+ (message "Evaluation aborted on %s." condition))))
(defun slime-eval-describe (form)
"Evaluate FORM in Lisp and display the result in a new buffer."
@@ -5884,7 +5884,7 @@
(assert sldb-restarts () "sldb-quit called outside of sldb buffer")
(slime-rex () ('(swank:throw-to-toplevel))
((:ok x) (error "sldb-quit returned [%s]" x))
- ((:abort))))
+ ((:abort _))))
(defun sldb-continue ()
"Invoke the \"continue\" restart."
@@ -5895,7 +5895,7 @@
((:ok _)
(message "No restart named continue")
(ding))
- ((:abort))))
+ ((:abort _))))
(defun sldb-abort ()
"Invoke the \"abort\" restart."
@@ -5912,7 +5912,7 @@
(slime-rex ()
((list 'swank:invoke-nth-restart-for-emacs sldb-level restart))
((:ok value) (message "Restart returned: %s" value))
- ((:abort)))))
+ ((:abort _)))))
(defun sldb-invoke-restart-by-name (restart-name)
(interactive (list (let ((completion-ignore-case t))
@@ -5929,7 +5929,7 @@
((list 'swank:sldb-break-with-default-debugger
(not (not dont-unwind)))
nil slime-current-thread)
- ((:abort))))
+ ((:abort _))))
(defun sldb-break-with-system-debugger (&optional lightweight)
"Enter system debugger (gdb)."
@@ -6015,7 +6015,7 @@
(slime-rex ()
((list 'swank:sldb-return-from-frame number string))
((:ok value) (message "%s" value))
- ((:abort)))))
+ ((:abort _)))))
(defun sldb-restart-frame ()
"Causes the frame to restart execution with the same arguments as it
@@ -6025,7 +6025,7 @@
(slime-rex ()
((list 'swank:restart-frame number))
((:ok value) (message "%s" value))
- ((:abort)))))
+ ((:abort _)))))
;;;;;; SLDB recompilation commands
--- /project/slime/cvsroot/slime/swank.lisp 2010/09/18 09:01:39 1.728
+++ /project/slime/cvsroot/slime/swank.lisp 2010/09/22 19:17:35 1.729
@@ -2107,7 +2107,7 @@
"Bind *BUFFER-PACKAGE* to BUFFER-PACKAGE and evaluate FORM.
Return the result to the continuation ID.
Errors are trapped and invoke our debugger."
- (let (ok result)
+ (let (ok result condition)
(unwind-protect
(let ((*buffer-package* (guess-buffer-package buffer-package))
(*buffer-readtable* (guess-buffer-readtable buffer-package))
@@ -2116,13 +2116,14 @@
(check-type *buffer-readtable* readtable)
;; APPLY would be cleaner than EVAL.
;; (setq result (apply (car form) (cdr form)))
- (setq result (with-slime-interrupts (eval form)))
+ (handler-bind ((t (lambda (c) (setf condition c))))
+ (setq result (with-slime-interrupts (eval form))))
(run-hook *pre-reply-hook*)
(setq ok t))
(send-to-emacs `(:return ,(current-thread)
,(if ok
`(:ok ,result)
- `(:abort))
+ `(:abort ,(prin1-to-string condition)))
,id)))))
(defvar *echo-area-prefix* "=> "
More information about the slime-cvs
mailing list