Re: reconnecting and *GLOBALLY-REDIRECT-IO*
Luís Oliveira <[email protected]> Mon, 23 Nov 2015 22:52:33 +0000
| Newsgroups | gmane.lisp.slime.devel |
|---|---|
| Message-ID | <CAB-HnLQZY05z9MXn005CnB8AK8nec8zdfEMgyp=wdXy2gAsc4w@mail.gmail.com> |
On Mon, Nov 23, 2015 at 4:18 PM, Gábor Melis <[email protected]> wrote: > Then switch to *slime-scratch* and evaluate with C-x C-e the loop > form. The output goes to the repl regardless of > *globally-redirect-io*. Now disconnect, reconnect and there is no more > output although the thread is still there. Right, so what happens in that scenario is that a thread is spawned via SWANK::SPAWN-WORKER-THREAD to handle the C-x C-e request and eventually calls SWANK::WITH-IO-REDIRECTION which will bind the various stream variables to the specific REPL stream created for the current connection. I've attached a tentative fix for your use case. I'll have to think a little bit about the broader implications. Can you tell me a bit more about how your use case came about? That might help. Cheers, -- Luís Oliveira http://kerno.org/~luis/
more-global-io-redirection.diff
(text/plain, 1.4 KB)
diff --git a/contrib/swank-repl.lisp b/contrib/swank-repl.lisp
index 5bf629a..deeeb4b 100644
--- a/contrib/swank-repl.lisp
+++ b/contrib/swank-repl.lisp
@@ -193,14 +193,15 @@ This is an optimized way for Lisp to deliver output to Emacs."
(let ((conn *emacs-connection*))
(initialize-streams-for-connection conn `(:coding-system ,coding-system))
(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))))
+ (unless *globally-redirect-io*
+ (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)
(add-hook *connection-closed-hook* 'update-redirection-after-close)
(typecase conn