[slime-devel] cl-indent improvement
Chris Capel
pdf23ds at gmail.com
Fri Dec 17 17:44:27 UTC 2004
I take it cl-indent in the SLIME repository is being maintained
separately from Emacs' copy, then? Well, two things. First, the CVS
entry for 1.2 says lisp-prefix-match-indentation was changed to
default to nil. That's not what happened. It's still t in CVS.
Second, one of the problems with cl-indent is that it's not possible
to specify in a custom indent method that any random list will be
indented like so:
(a b c
d e f
g h i)
So, I added an option called &rest-offset that makes proceeding lines
indented by the following offset integer. So, if you have a form you
want indented like this:
(deffoo blah
blah
(blah blah blah
blah blah blah))
all you have to do is (put 'deffoo 'common-lisp-indent-function '(6 4
(&whole 2 &rest-offset 1))). Not bad, eh?
On a different note, where should forms like that go? They're part of
the macro, conceptually, but part of the editor, technically. If you
put it in the source file in a comment, it never gets processed when
the system is loaded, but if you put it in your .emacs, no one else
benefits from it.
Maybe there should be a :SWANK in *features*, so you could do:
#+swank (swank:eval-in-emacs '(put 'deffoo ...))
This would be evaluated when the file's loaded, but would it happen
when the compiled file is loaded?
Chris Capel
RCS file: /project/slime/cvsroot/slime/cl-indent.el,v
retrieving revision 1.2
diff -r1.2 cl-indent.el
42,48d41
< ;; &rest 1 in lambda-lists doesn't work
< ;; -- really want (foo bar
< ;; baz)
< ;; not (foo bar
< ;; baz)
< ;; Need something better than &rest for such cases
<
344a338,339
> (and (eq tem '&rest-offset)
> (integerp (cadr method)))
372a368,369
> ((eq tem '&rest-offset)
> (throw 'exit (+ sexp-column (cadr method))))
More information about the slime-devel
mailing list