[slime-devel] First Impressions

iain.little at gmail.com iain.little at gmail.com
Fri Jul 16 04:48:03 UTC 2004


I finally got around to trying SLIME, by downloading the tarfile at:
http://www.common-lisp.net/project/slime/slime-1.0alpha.tar.gz

I must say, I am very impressed.  It looks like Slime aims to fix
almost all of my minor annoyances when using cmucl/ilisp.  In
particular, I like the way that it opens a different buffer to deal
with errors/breaks/etc, rather than dumping a screen full of stuff
into the repl buffer.

But a few things that I noticed:

I like to put testing sexprs in the files that I am working on (I put
them in all in a #| |# commented region so that I can evaluate them
when I want, but they don't evaluate when I compile/load the file).
In ilisp I evaluate them with C-z e, and I gather that the slime
equivalent is C-x C-e.  

The problem is, slime puts the output in the minibuffer. (Ok, ilisp
can be set up to do this as well, but I have it disabled.)  Often I am
printing out a representation of a large enough data structure that
the output doesn't even fit in the available space.  Also, the way
that it disappears as soon as a key is pressed prevents me from
refering to it later after I have checked/tested something else.  The
obvious workaround is to copy/paste the sexpr into the repl buffer,
but I do this so often (at least on my current project) that this
would be a serious pain.

For me, the ideal way for this to work would be for there to be a
variable that controls whether or not evaluation output goes to the
minibuffer or the repl (Or is there one already?  I put a bit of
effort into looking and couldn't find anything...).  A different
evaluation command (maybe: slime-eval-last-expression-in-repl) would
also work.

I also noticed a couple of indentation issues: (ok, I admit it; I went
out of my way to see how slime would indent different things ;-) )

CL> (defmacro test (a &body b) (list* '+ a b))
TEST
CL> (test 1
      2)
3

Which - as advertised - actually does the right thing (ilisp most
certainly doesn't). But,

CL> (with-accessors ((a b)) c
		    ...)

and

CL> (defgeneric test2 (a)
      (:method-combination progn))
#<Standard-Generic-Function TEST2 (0) {48B3C389}>
CL> (defmethod test2 progn ((object a))
	       ...)

still arn't right. (But no loss there; ilisp does exactly the same
thing...)

The only other thing is that the &body indentation doesn't work in the
lisp buffers created by opening a file.  But I suspect that is because
I still have ilisp installed, and it is clobbering whatever slime
does. (Is there a workaround?)

Anyway, I hope this helps.  Slime has impressed me enough that I'm
quite certain that I'll switch to it sometime in the future; the only
thing stopping me at the moment is the minibuffer issue. (If nothing
else, I'll come up with a fix myself when I have more time; my honours
project is all-consuming at the moment.)

Regards,


Iain




More information about the slime-devel mailing list