libera/#slime - IRC Chatlog
Search
18:30:02
pjb
dieggsy: the problem is that other threads may still use their own copy of the special variables, with their own bindings to the original *terminal-io* (ie. *inferior-lisp*), as well as closures having obtained their threads before swank was initialized.
18:31:04
pjb
Try: (list *standard-input* *standard-output* *error-output* *trace-output* *terminal-io* *query-io* *debug-io*)
18:32:50
pjb
see also: (swank:*default-worker-thread-bindings* SWANK:*MACROEXPAND-PRINTER-BINDINGS* SWANK::*INSPECTOR-VERBOSE-PRINTER-BINDINGS* SWANK::*INSPECTOR-PRINTER-BINDINGS* swank::*backtrace-printer-bindings* #+#.(cl:if (cl:find-symbol "*SLDB-PRINTER-BINDINGS*" "SWANK") '(:and) '(:or)) swank:*sldb-printer-bindings*)
18:33:19
pjb
You could add binding for all those stream variables to those swank bindings variables to force them on all swank stuff.
18:34:18
dieggsy
er, whoops, i tested in slynk and not slime, i have them side by side. in any case they pretty much do the same thing in this regard
18:34:41
pjb
But of course, you cannot do that in .swank.lisp, but after swank is started once you have the slime-stream instances.
18:35:22
pjb
In *inferior-lisp*, *terminal-io* is #<ECHOING-TWO-WAY-STREAM input #<BASIC-CHARACTER-INPUT-STREAM UTF-8 (PIPE/0) #x3020003BE5DD>, output #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (PIPE/1) #x3020003BE14D> #x3020003C386D> (and the others should be synonym-streams to it).
18:35:43
pjb
in the slime repl, you have #<swank/gray::slime-input-stream #x30200200D2BD> #<swank/gray::slime-output-stream #x30200200CF2D> and two-way-streams combining them.
18:37:39
dieggsy
hm. I'll look into this when i have a bit more time to fiddle around with it. thank you!
0:02:25
luis
dieggsy: all those streams that pjb mentions point to SWANK streams when you launch Lisp with M-x slime. Are you perhaps connecting SLIME to an already running process?
0:04:33
dieggsy
luis: i think i just mixed up slime and slynk as i had both open, i'll take another look
0:08:37
dieggsy
like, to the point where i feel like a lot of it is "changed the name and went with it'
0:08:59
pjb
Perhaps there's a ~/.slynk.lisp file and some (slynk:*default-worker-thread-bindings* SLYNK:*MACROEXPAND-PRINTER-BINDINGS* SLYNK::*INSPECTOR-VERBOSE-PRINTER-BINDINGS* SLYNK::*INSPECTOR-PRINTER-BINDINGS* slynk::*backtrace-printer-bindings* #+#.(cl:if (cl:find-symbol "*SLDB-PRINTER-BINDINGS*" "SLYNK") '(:and) '(:or)) slynk:*sldb-printer-bindings*) ?
0:18:28
luis
So, I expect (values swank-repl::*globally-redirect-io* swank-loader::*started-from-emacs*) to yield :STARTED-FROM-EMACS and T
0:20:39
dieggsy
luis: M-x slime, that original list shows me a swank/gray stream for the first stream, the rest are sysnonym-stream ?
0:22:08
luis
my *debug-io* evaluates to #<SYNONYM-STREAM :SYMBOL SWANK::*CURRENT-DEBUG-IO* {1004349253}>
0:22:15
dieggsy
still, something like (excl:run-shell-command "echo hey") in allegro shows output in *inferior-lisp-buffer*
0:24:59
dieggsy
i'm not sure i understand the distinction between "directly to stdout" vs ..... i sort of assumed slime was handling STDOUT in a special way? but
0:25:26
dieggsy
....end of the day, i'd just like all output to be on the repl buffer. it's a bit weird to have a separate buffer that gets some output
0:30:36
luis
dieggsy: does (excl:run-shell-command "echo hey" :output *standard-output*) work for you? It doesn't for me on Windows.
0:40:57
dieggsy
luis: ah. my brain is now connecting the dots. "how did you know about that?" now i know heh. thanks for slime then :)
0:44:14
dieggsy
this function does not in fact exist in sly... i'd say this tips the scales in slime's favor heh
0:45:38
luis
dieggsy: João may have overlooked that when he reworked the mrepl contrib. There's some good ideas in there, it'd be nice to merge them back.