[slime-devel] *inferior-lisp* and *slime-repl*: what's the difference?
Helmut Eller
e9626484 at stud3.tuwien.ac.at
Thu Nov 13 18:03:23 UTC 2003
Paolo Amoroso <amoroso at mclink.it> writes:
> What are the differences between the inferior Lisp listener and the
> SLIME REPL one? For what kinds of tasks is each of them intended? How
> do I set one of them as the default listener?
The slime-repl works with our custom streams, i.e., we bind
*standard-io* and some other streams variables to our streams. These
streams send/read their output/input from the slime socket. The
send/read events from the streams are integrated (at least to some
degree) with Slime's state machine. This gives us better control over
the Lisp process, e.g., when you say y-or-n-p in the Lisp process,
Emacs receives a read event and can display the slime-repl window.
The inferior-lisp Listener works with Emacs process filters (comint
actually). When you say y-or-n-p in Lisp, Emacs displays the prompt,
but has no reliable way to tell if the Lisp is going to read input.
Inferior-lisp relies on the inferior-lisp-prompt regexp for proper
operation.
Ideally there would be no need for the inferior-lisp listener. We
would like to redirect all output to our streams. Unfortunately this
is not always possible, e.g., when Lisp calls some C code that writes
to stdout. Output to the slime-repl is also bit slower, because Emacs
has to parse the events etc. I think the idea is, that you should use
slime-repl for almost everything. Inferior-lisp is useful as fallback
and for lowlevel things, like debugging the Slime protocol.
We also set an extra annoying hook that pops up the inferior-lisp
buffer every time when some output arrives on the inferior-lisp process
filter. This is intentional to encourage myself (and other people) to
use the slime-repl.
Helmut.
More information about the slime-devel
mailing list