From fb1267d90a5c25a29dbdae170ea065e017b05d29 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Thu, 4 Nov 2021 22:07:48 +0100 Subject: Indent lambdas/closures better * lisp/emacs-lisp/pp.el (pp--format-function): Indent lambdas and closures better. --- lisp/emacs-lisp/pp.el | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'lisp/emacs-lisp') diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el index ca3f2a270e2..1d7b935b6d9 100644 --- a/lisp/emacs-lisp/pp.el +++ b/lisp/emacs-lisp/pp.el @@ -236,9 +236,20 @@ Ignores leading comment characters." (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. -- cgit v1.2.3