[slime-devel] slime-indentation: what's cooking

Nikodemus Siivola nikodemus at random-state.net
Thu May 19 09:46:17 UTC 2011


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




More information about the slime-devel mailing list