]> git.eshelyaron.com Git - emacs.git/commitdiff
Indent lambdas/closures better
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Nov 2021 21:07:48 +0000 (22:07 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 4 Nov 2021 21:07:48 +0000 (22:07 +0100)
* lisp/emacs-lisp/pp.el (pp--format-function): Indent lambdas and
closures better.

lisp/emacs-lisp/pp.el
test/lisp/emacs-lisp/pp-resources/code-formats.erts

index ca3f2a270e22e2cc96e1626bb99209933be344f5..1d7b935b6d90b96a5f85b6f37abf634c2e0fb301 100644 (file)
@@ -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.
index 821e326867bd198f8a53ff8ccb00fee0b36143f0..f48e262f69d63b9ac704d864553b47e264fa1d28 100644 (file)
@@ -95,3 +95,11 @@ Also add the value to the front of the list in the variable `values'."
     (values--store-value result)
     (pp-display-expression result "*Pp Eval Output*")))
 =-=-=
+
+Name: code-formats9
+
+=-=
+(lambda ()
+  (interactive)
+  1)
+=-=-=