Index: swank-abcl.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-abcl.lisp,v retrieving revision 1.34 diff -u -r1.34 swank-abcl.lisp --- swank-abcl.lisp 2 Feb 2006 02:45:11 -0000 1.34 +++ swank-abcl.lisp 30 Mar 2006 02:19:18 -0000 @@ -491,7 +491,8 @@ (unless *auto-flush-thread* (setq *auto-flush-thread* (ext:make-thread #'flush-streams - :name "auto-flush-thread")))) + :name "auto-flush-thread"))) + stream) (defun flush-streams () (loop Index: swank-allegro.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-allegro.lisp,v retrieving revision 1.82 diff -u -r1.82 swank-allegro.lisp --- swank-allegro.lisp 10 Feb 2006 16:54:01 -0000 1.82 +++ swank-allegro.lisp 30 Mar 2006 02:19:19 -0000 @@ -130,7 +130,8 @@ (describe (find-class symbol))))) (defimplementation make-stream-interactive (stream) - (setf (interactive-stream-p stream) t)) + (setf (interactive-stream-p stream) t) + stream) ;;;; Debugger Index: swank-backend.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-backend.lisp,v retrieving revision 1.96 diff -u -r1.96 swank-backend.lisp --- swank-backend.lisp 25 Feb 2006 12:10:33 -0000 1.96 +++ swank-backend.lisp 30 Mar 2006 02:19:19 -0000 @@ -374,9 +374,9 @@ This is called for each stream used for interaction with the user \(e.g. *standard-output*). An implementation could setup some implementation-specific functions to control output flushing at the -like." - (declare (ignore stream)) - nil) +like. Returns a stream that may or may not be the same object as the +one passed in." + stream) ;;;; Documentation Index: swank-lispworks.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-lispworks.lisp,v retrieving revision 1.82 diff -u -r1.82 swank-lispworks.lisp --- swank-lispworks.lisp 10 Feb 2006 16:54:01 -0000 1.82 +++ swank-lispworks.lisp 30 Mar 2006 02:19:20 -0000 @@ -773,7 +773,8 @@ nil) (let ((lw:*handle-warn-on-redefinition* :warn)) (defmethod stream:stream-soft-force-output ((o (eql stream))) - (force-output o))))) + (force-output o)))) + stream) (defmethod env-internals:confirm-p ((e slime-env) &optional msg &rest args) (apply (swank-sym :y-or-n-p-in-emacs) msg args)) Index: swank-loader.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-loader.lisp,v retrieving revision 1.57 diff -u -r1.57 swank-loader.lisp --- swank-loader.lisp 25 Feb 2006 14:57:21 -0000 1.57 +++ swank-loader.lisp 30 Mar 2006 02:19:20 -0000 @@ -37,7 +37,7 @@ '("nregex") #+cmu '("swank-source-path-parser" "swank-source-file-cache" "swank-cmucl") #+scl '("swank-source-path-parser" "swank-source-file-cache" "swank-scl") - #+sbcl '("swank-sbcl" "swank-source-path-parser" + #+sbcl '("locked-stream" "swank-sbcl" "swank-source-path-parser" "swank-source-file-cache" "swank-gray") #+openmcl '("metering" "swank-openmcl" "swank-gray") #+lispworks '("swank-lispworks" "swank-gray") Index: swank-openmcl.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-openmcl.lisp,v retrieving revision 1.106 diff -u -r1.106 swank-openmcl.lisp --- swank-openmcl.lisp 7 Mar 2006 09:51:52 -0000 1.106 +++ swank-openmcl.lisp 30 Mar 2006 02:19:20 -0000 @@ -177,10 +177,11 @@ (setq ccl::*interactive-abort-process* ccl::*current-process*)) (defimplementation make-stream-interactive (stream) - nil) + stream) (defmethod make-stream-interactive ((stream ccl:fundamental-output-stream)) - (push stream ccl::*auto-flush-streams*)) + (push stream ccl::*auto-flush-streams*) + stream) ;;; Unix signals Index: swank-sbcl.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-sbcl.lisp,v retrieving revision 1.152 diff -u -r1.152 swank-sbcl.lisp --- swank-sbcl.lisp 20 Jan 2006 21:31:20 -0000 1.152 +++ swank-sbcl.lisp 30 Mar 2006 02:19:21 -0000 @@ -1195,11 +1195,13 @@ (defvar *auto-flush-thread* nil) (defimplementation make-stream-interactive (stream) - (setq *auto-flush-streams* (adjoin stream *auto-flush-streams*)) - (unless *auto-flush-thread* - (setq *auto-flush-thread* - (sb-thread:make-thread #'flush-streams - :name "auto-flush-thread")))) + (let ((stream (swank-locked-stream:make-locked-stream stream))) + (setq *auto-flush-streams* (adjoin stream *auto-flush-streams*)) + (unless *auto-flush-thread* + (setq *auto-flush-thread* + (sb-thread:make-thread #'flush-streams + :name "auto-flush-thread"))) + stream)) (defun flush-streams () (loop Index: swank-scl.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-scl.lisp,v retrieving revision 1.5 diff -u -r1.5 swank-scl.lisp --- swank-scl.lisp 25 Feb 2006 17:46:13 -0000 1.5 +++ swank-scl.lisp 30 Mar 2006 02:19:22 -0000 @@ -344,7 +344,8 @@ (defimplementation make-stream-interactive (stream) (when (or (typep stream 'slime-input-stream) (typep stream 'slime-output-stream)) - (setf (slot-value stream 'interactive) t))) + (setf (slot-value stream 'interactive) t)) + stream) ;;;; Compilation Commands Index: swank.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank.lisp,v retrieving revision 1.363 diff -u -r1.363 swank.lisp --- swank.lisp 25 Feb 2006 12:10:33 -0000 1.363 +++ swank.lisp 30 Mar 2006 02:19:25 -0000 @@ -490,8 +490,9 @@ (multiple-value-bind (in out) (make-fn-streams input-fn output-fn) (let ((out (or dedicated-output out))) (let ((io (make-two-way-stream in out))) - (mapc #'make-stream-interactive (list in out io)) - (values dedicated-output in out io))))))) + (apply #'values + dedicated-output + (mapcar #'make-stream-interactive (list in out io))))))))) (defun make-output-function (connection) "Create function to send user output to Emacs.