[slime-devel] [PATCH] Output redirection in the SIMPLE-SERVE-EVENTS case.
Benjamin L. Russell
DekuDekuplex at Yahoo.com
Mon Jun 1 09:55:27 UTC 2009
On Thu, 14 May 2009 00:45:01 +0400 (MSD), Samium Gromoff
<_deepfire at feelingofgreen.ru> wrote:
>
>Good day folks,
>
>The following patch fixes the *standard-output* not being redirected
>into the *slime-repl* buffer on SBCL/win32 specifically, and in
>all cases when connection communication style is NIL, in general.
>
>The problem appeared in the CVS commit dated 2008-12-24 11:14:06,
>which moved environment capture past the point where the event handlers
>were entering the binding of the stream variables, which is set
>from the environment.
>
>The fix was tested on Linux/x86/SBCL-1.0.22 and MinGW/SBCL-1.0.28.43.
>
>commit 87cd4f6167e0b9695a279d8c64e1f4876a001e0a
>Author: Samium Gromoff <_deepfire at feelingofgreen.ru>
>Date: Wed May 13 23:44:52 2009 +0400
>
> Capture stream globals before the request servers are called.
>
>diff --git a/swank.lisp b/swank.lisp
>index a0646c2..90418f2 100644
>--- a/swank.lisp
>+++ b/swank.lisp
>@@ -1408,6 +1408,16 @@ The processing is done in the extent of the toplevel restart."
> :serve-requests #'simple-serve-requests))
> )))
> (setf (connection.communication-style c) style)
>+ (initialize-streams-for-connection c)
>+ (with-struct* (connection. @ c)
>+ (setf (@ env)
>+ `((*standard-output* . ,(@ user-output))
>+ (*standard-input* . ,(@ user-input))
>+ (*trace-output* . ,(or (@ trace-output) (@ user-output)))
>+ (*error-output* . ,(@ user-output))
>+ (*debug-io* . ,(@ user-io))
>+ (*query-io* . ,(@ user-io))
>+ (*terminal-io* . ,(@ user-io)))))
> (setf success t)
> c)
> (unless success
>@@ -1569,16 +1579,7 @@ NIL if streams are not globally redirected.")
> (defslimefun create-repl (target)
> (assert (eq target nil))
> (let ((conn *emacs-connection*))
>- (initialize-streams-for-connection conn)
> (with-struct* (connection. @ conn)
>- (setf (@ env)
>- `((*standard-output* . ,(@ user-output))
>- (*standard-input* . ,(@ user-input))
>- (*trace-output* . ,(or (@ trace-output) (@ user-output)))
>- (*error-output* . ,(@ user-output))
>- (*debug-io* . ,(@ user-io))
>- (*query-io* . ,(@ user-io))
>- (*terminal-io* . ,(@ user-io))))
> (maybe-redirect-global-io conn)
> (when (use-threads-p)
> (setf (@ repl-thread) (spawn-repl-thread conn "repl-thread")))
When I applied this patch to the SLIME CVS update that I had
downloaded on May 20, 2009, at 05:42, for Windows XP Professional,
Service Pack 2, slime-banner failed to be invoked, and the following
messages appeared in my REPL at started:
>CL-USER>
>;; Loading file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-asdf.fas ...
>;; Loaded file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-asdf.fas
>;; Loading file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-package-fu.fas ...
>;; Loaded file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-package-fu.fas
>;; Loading file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-fuzzy.fas ...
>;; Loading file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-c-p-c.fas ...
>;; Loaded file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-c-p-c.fas
>;; Loaded file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-fuzzy.fas
>;; Loading file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-fancy-inspector.fas ...
>;; Loaded file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-fancy-inspector.fas
>;; Loading file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-arglists.fas ...
>;; Loaded file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-arglists.fas
>;; Loading file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-presentations.fas ...
>;; Loaded file C:\home\.slime\fasl\2009-05-19\clisp-2.45-win32-pc386\contrib\swank-presentations.fas
>CL-USER>
>CL-USER>
Anybody know how to patch this patch? Apparently, this patch does not
seem to have been applied in the CVS version of swank.lisp
downloadable from
http://common-lisp.net/project/slime/snapshots/slime-current.tgz.
Just for reference, here are relevant lines from my .emacs file:
>;; Setup for SLIME
>(setq inferior-lisp-program "C:/bin/clisp-2.45/full/lisp.exe
>-B C:/bin/clisp-2.45/full
>-M C:/bin/clisp-2.45/full/lispinit.mem
>-ansi -q")
>(add-to-list 'load-path "C:/bin/emacs/site-lisp/slime/")
>(require 'slime)
>(slime-setup '(slime-fancy slime-asdf slime-banner))
-- Benjamin L. Russell
--
Benjamin L. Russell / DekuDekuplex at Yahoo dot com
http://dekudekuplex.wordpress.com/
Translator/Interpreter / Mobile: +011 81 80-3603-6725
"Furuike ya, kawazu tobikomu mizu no oto."
-- Matsuo Basho^
More information about the slime-devel
mailing list