[slime-devel] Re: Redirecting output from slime-compile-and-load-file?
Nikodemus Siivola
nikodemus at random-state.net
Thu Nov 9 10:19:01 UTC 2006
Chris Dean <ctdean at sokitomi.com> writes:
> Matt Pillsbury <pillsbury at gmail.com> writes:
>> I was wondering if it is possible, using SBCL and SLIME, to have the
>> output (errors, warnings, et c.) from slime-compile-and-load-file
>> directed somewhere other than the REPL?
>
> Did you ever find a solution to this? I'm also looking for a way to
> keep my repl clean.
Slime doesn't currently have the infrastructure for this really, not
that adding it would be too difficult.
Compiler-output controlled by *compile-print* and *compile-verbose*
should go to *standard-output*, which I believe you don't have a
problem with.
Everything else _should_ go to *error-output*, and in SBCL at least
I believe it does, so you need to bind *error-output* at the right
place to another stream.
(defun swank-compiler (function)
(clear-compiler-notes)
(with-simple-restart (abort "Abort SLIME compilation.")
(multiple-value-bind (result usecs)
(handler-bind ((compiler-condition #'record-note-for-condition))
(let ((*error-output* your-compiler-error-output-stream)) ; <--- HERE
(measure-time-interval function)))
(list (to-string result)
(format nil "~,2F" (/ usecs 1000000.0))))))
If you just want to get rid of the "noise", bind it to the result of
(make-broadcast-stream).
The more complete solution is to add another stream to the comm layer,
and have it write to *slime-compile-output* or something.
Cheers,
-- Nikodemus Schemer: "Buddha is small, clean, and serious."
Lispnik: "Buddha is big, has hairy armpits, and laughs."
More information about the slime-devel
mailing list