Also sprach Luís Oliveira on 2013-10-11:
slime/contrib/swank-indentation.lisp also has a customization mechanism as well, *application-hints-tables*, which might be useful if you want to do it on the Common Lisp side.
I've made a modification to swank-indentation.lisp to allow functions to be called to get the indentation rule, but I've run into a bit of a snag... The indentation rule will be used when the form is the first form that needs to be looked up from *application-hints-table*.
Indentation now works like this (when given the rule (AS LAMBDA)):
(defun test () (x!html () (x!head () ...) ...))
I assume this has something to do with the way symbols are looked up, but I'm not sure where things get lost. Any pointer in the right direction will be appreciated.