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))))