[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