Nikodemus Siivola nikodemus@random-state.net writes:
On 30 March 2011 19:22, Madhu enometh@meer.net wrote:
With Emacs you could try the appended Kludge (incomplete), which would
--- cl-indent.el.orig 2011-01-28 21:36:00.000000000 +0530 +++ cl-indent.el 2011-03-30 21:33:07.000000000 +0530
Actually this gets me
(deffoo foo (stuff) (:bar (a b) (cons a b)) (:zot (a b c) (fii a b c)) (:default 42) (:error (crap)))
which /is/ better, but not I'm looking for. More importantly, it doesn't help anyone else.
The question isn't how to do this for myself -- I can put
(setf (get ':bar 'common-lisp-indent-function) '1) (setf (get ':zot 'common-lisp-indent-function) '1) (setf (get ':default 'common-lisp-indent-function) '0) (setf (get ':error 'common-lisp-indent-function) '0)
in my .emacs. The question is how to make it automatically right for everyone. If I write a library that provides a DEFFOO like this, I would like it to be correctly indented for all Slime users.
Use Common Lisp. Put in the source file:
(cl:declaim (cl:declaration cl-user::indentation)) (cl:declaim (cl-user::indentation (:bar 1) (:zot 1) (:default 0) (:error 0)))
and have slime parse it.
I use this technique to declare package dependencies in addition to what's specified in defpackage (ie. qualified symbols, and dynamic INTERN). Then my make-depend script can parse it easily, to generate the ASD file.