[slime-devel] Re: Rape/Steal/Pillage
Brian Downing
bdowning at lavos.net
Wed Dec 10 00:32:45 UTC 2003
On Wed, Dec 10, 2003 at 09:42:20AM +1100, Alain.Picard at memetrics.com wrote:
> I think you're right, after doing a bit more investigation.
> The first one I hit which really annoyed me was M-q which
> did not reindent the top level form properly (in SLIME).
> So I looked in ILISP, and M-q was bound to REINDENT-LISP,
> which is some gawd-awful complicated function which calls
> a gazillion other complicated functions to do its work.
>
> Then I noticed the emacs provided indent-sexp. :-)
>
> so I guess reindent-defun could be trivially written
> as [save excursion [goto start of defun] [indent-sexp]]
> and be bound to M-q.
REINDENT-LISP does more than that, unfortunatly. It will turn
(defun foo (bar)
(if bar
baz
gronk) ; <- note
or
(defun foo (bar)
(if bar
baz
gronk))) ; <- note
into
(defun foo (bar)
(if bar
baz
gronk)) ; <- note
By correcting the number of parans at the end of the defun, it's really
easy to make some changes, bang M-q, examine the "shape" of the defun,
and if it's "shaped" right, you can be relatively confident it will
compile without worrying about insufficient or extra closing parans on
the end.
I used to use this feature a lot, and still miss it.
-bcd
More information about the slime-devel
mailing list