[Bordeaux-threads-devel] binding output stream in thread for slime use

Tobias C Rittweiler tcr at freebits.de
Thu Dec 30 12:48:10 UTC 2010


In article <4D0348A3.2000105 at gmail.com>,
 Antony <lisp.linux at gmail.com> wrote:

> Hi
> 
> I am trying to use bordeaux threads.
> Trying to figure out how to make output from a thread function appear in 
> slime instead of the lisp terminal.
> The lisp I am using is
> Clozure Common Lisp Version 1.6-r14468M  (WindowsX8664)
> 
> I beleive I have the latest bordeaux threads
> 
> Following is my test code. I hope the intentions are clear.
> 
> What am I doing wrong or missing?
> 
> Code follows
> Thanks,
> -Antony
> 
> (asdf:oos 'asdf:load-op :bordeaux-threads)
> 
> (format t "~%appearing in slime")
> 
> (defun thread-test ()
>    (format t "~%appearing in lisp terminal: ~A"
>            (bordeaux-threads:thread-name 
> (bordeaux-threads:current-thread))))
> 
> (let ((bindings
>         '((*standard-input* . *standard-input*)
>           (*standard-output* . *standard-output*)
>           (*query-io* . *query-io*)
>           (*trace-output* . *trace-output*))))  ;;is this correct?
>    (dolist (name '("foo" "bar"))
>          (bordeaux-threads:make-thread #'thread-test
>                                        :name name
>                                        :initial-bindings bindings)))

You can place

  (setq swank:*globally-redirect-io* t)

into your ~/.swank.lisp to globally install the slime repl streams,
so all output will show up in your *slime-repl ...* buffer.

Another way, next to what Vladimir said, is to use

  (define-symbol-macro *repl-stream*
    (swank::connection.user-output (swank::default-connection)))

I'd say this question would have been more appropriate
on slime-devel. :-)

Anyway, hth,

  -T.





More information about the bordeaux-threads-devel mailing list