[slime-cvs] CVS slime

CVS User heller heller at common-lisp.net
Thu Oct 30 09:28:51 UTC 2008


Update of /project/slime/cvsroot/slime
In directory cl-net:/tmp/cvs-serv20453

Modified Files:
	ChangeLog swank-sbcl.lisp 
Log Message:
* swank-sbcl.lisp (wait-for-input): Return streams which are at
EOF.

--- /project/slime/cvsroot/slime/ChangeLog	2008/10/30 09:28:43	1.1573
+++ /project/slime/cvsroot/slime/ChangeLog	2008/10/30 09:28:51	1.1574
@@ -1,5 +1,10 @@
 2008-10-30  Helmut Eller  <heller at common-lisp.net>
 
+	* swank-sbcl.lisp (wait-for-input): Return streams which are at
+	EOF.
+
+2008-10-30  Helmut Eller  <heller at common-lisp.net>
+
 	* slime.el (slime-popup-buffer-quit): Call bury-buffer with
 	explicit argument for compatibility with XEmacs.
 
--- /project/slime/cvsroot/slime/swank-sbcl.lisp	2008/10/17 21:27:24	1.226
+++ /project/slime/cvsroot/slime/swank-sbcl.lisp	2008/10/30 09:28:51	1.227
@@ -176,13 +176,22 @@
     (setq *wait-for-input-called* t))
   (let ((*wait-for-input-called* nil))
     (loop
-     (let ((ready (remove-if-not #'listen streams)))
+     (let ((ready (remove-if (lambda (s)
+                               (let ((c (read-char-no-hang s nil :eof)))
+                                 (case c
+                                   ((nil) t)
+                                   ((:eof) nil)
+                                   (t 
+                                    (unread-char c s)
+                                    nil))))
+                             streams)))
        (when ready (return ready)))
      (when timeout (return nil))
      (when (check-slime-interrupts) (return :interrupt))
      (when *wait-for-input-called* (return :interrupt))
      (let* ((f (constantly t))
             (handlers (loop for s in streams
+                            do (assert (open-stream-p s))
                             collect (add-one-shot-handler s f))))
        (unwind-protect
             (sb-sys:serve-event 0.2)





More information about the slime-cvs mailing list