[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