Chris Capel pdf23ds@gmail.com writes:
Consider
(defmacro deffoo (name bar baz &rest options) ...)
With this definition (or any definition using rest, really), this is the indentation you get:
(deffoo foo bar baz opt1 opt2)
Shouldn't &rest be treated like &body as far as macroindentation is concerned?
No. IIUC the only difference between &rest and &body is that tools are supposed to indent &body specially but not &rest. (I believe this is discussed in the hyperspec.)
However, the indentation you're seeing in that example isn't determined by slime but by Emacs itself. Emacs has builtin rules for how to indent def* and with-* macros and by default SLIME won't override them.
If you want SLIME to learn indentation for def* and with-* then you can set `slime-conservative-indentation' to nil.
To see the intended behaviour take for example the indentation arglist (mapcar f list &rest lists) vs. (with-foo foo &body body):
(mapcar #'the-function-i-want-to-map my-first-list my-second-list)
(with-foo my-foo (frob1) (frob2))
Cheers, Luke