Michael Livshin gmane@cmm.kakpryg.net writes:
the attached patch adds a way to define and access custom indentation specifications like this:
<example> (defmacro my-macro (name (&rest args) &body function-bindings) ...)
#+swank (setf (swank:emacs-indentation 'my-macro) '(6 4 (&whole 2 &rest (&whole 1 &lambda &body))))
</example>
I am also interested in a feature like this.
In my opinion, an important consideration in implementing it is that FASL files generated within SLIME should still be loadable into non-SWANK images.
I am using the following code to do that (for a different customization):
;; Arrange for SLIME to use the right readtable (when (find-package :swank) (push (cons :guile guile-internal::*guile-readtable*) (symbol-value (intern (symbol-name '#:*readtable-alist*) :swank)))
(defmethod swank-backend:swank-compile-file :around (file-name load-p) (if (string= (pathname-type file-name) "scm") (let ((*package* (find-package :guile)) (*readtable* guile-internal::*guile-readtable*)) (call-next-method)) (call-next-method))) )
Because all references to the SWANK package are made at load time (not read or compile time), FASL files including the above code can still be loaded into non-SWANK images.
A SWANK macro (SWANK:DEF-EMACS-INDENTATION?) that expands into something similar would be useful.
Matthias