(defun pp--format-function (sexp)
(let* ((sym (car sexp))
(edebug (get sym 'edebug-form-spec))
- (indent (get sym 'lisp-indent-function)))
+ (indent (get sym 'lisp-indent-function))
+ (doc (get sym 'doc-string-elt)))
(when (eq indent 'defun)
(setq indent 2))
+ ;; We probably want to keep all the elements before the doc string
+ ;; on a single line.
+ (when doc
+ (setq indent (1- doc)))
+ ;; Special-case closures -- these shouldn't really exist in actual
+ ;; source code, so there's no indentation information. But make
+ ;; them output slightly better.
+ (when (and (not indent)
+ (eq sym 'closure))
+ (setq indent 0))
(pp--insert "(" sym)
(pop sexp)
;; Get the first entries on the first line.