I'm now probably going to lay off from making additions to slime-indentation for a while, eating my own dogfood instead of making more.
I just wanted to give a heads-up on a few features in my github tree that are not in CVS yet:
https://github.com/nikodemus/Slime/tree/slime-indentation
1. Support for named styles. This still needs cleanup, but there has been some progress. You may need to update your styles later if you start using this now, but probably not very much.
2. Per package indentation information. Currently Slime messes things up when sending indentation hints derived from macro-lambda lists if there are multiple macros with the same symbol-name in different packages, with different lambda-lists. I've made it so that things should -- mostly -- go right.
3. Delegating indentation specs. Specifying (as let) as the indentation of another symbol means to indent it as if it was a let -- and if the indentation of let changes, those delegating to it will automatically pick up the new indentation. This is especially important for styles: if the style you are defining inherits from another style that uses (as case) for case, ecase, typecase, etc, you only need to redefine the indentation of case to have everything change.
4. An attempt at deriving better macro-indentation specs, so that eg.
(defmacro foo (x (&rest args) &body body) ...)
gives us
(foo (bar quux zot) (a b c d) (form1) (form2))
instead of
(foo (bar quux zot) (a b c d) (form1) (form2))
If anyone wants to test-drive that branch, they're most welcome. Let me know if something doesn't work as expected.
Cheers,
-- nikodemus