diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-11-04 22:31:15 +0100 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-11-04 22:31:15 +0100 |
commit | cb9f3e1158a7b3cf556bdeeb5c4ba5896279a573 (patch) | |
tree | 32c652b97c8ebdd7a36fde440f397268073fc5e7 /lisp/emacs-lisp/pp.el | |
parent | fb1267d90a5c25a29dbdae170ea065e017b05d29 (diff) | |
download | emacs-cb9f3e1158a7b3cf556bdeeb5c4ba5896279a573.tar.gz emacs-cb9f3e1158a7b3cf556bdeeb5c4ba5896279a573.tar.bz2 emacs-cb9f3e1158a7b3cf556bdeeb5c4ba5896279a573.zip |
Fix up some list folding in pp-emacs-lisp-code
* lisp/emacs-lisp/pp.el (pp--insert-lisp, pp--format-list)
(pp--insert): Touch up list folding.
Diffstat (limited to 'lisp/emacs-lisp/pp.el')
-rw-r--r-- | lisp/emacs-lisp/pp.el | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el index 1d7b935b6d9..67a21c53915 100644 --- a/lisp/emacs-lisp/pp.el +++ b/lisp/emacs-lisp/pp.el @@ -199,7 +199,9 @@ Ignores leading comment characters." (pp--insert-lisp sexp) (insert "\n") (goto-char (point-min)) - (indent-sexp)))) + (indent-sexp) + (while (re-search-forward " +$" nil t) + (replace-match ""))))) (defun pp--insert-lisp (sexp) (cl-case (type-of sexp) @@ -208,8 +210,14 @@ Ignores leading comment characters." ((consp (cdr sexp)) (if (and (length= sexp 2) (eq (car sexp) 'quote)) - (let ((print-quoted t)) - (prin1 sexp)) + (cond + ((symbolp (cadr sexp)) + (let ((print-quoted t)) + (prin1 sexp))) + ((consp (cadr sexp)) + (insert "'") + (pp--format-list (cadr sexp) + (set-marker (make-marker) (1- (point)))))) (pp--format-list sexp))) (t (princ sexp)))) @@ -227,11 +235,15 @@ Ignores leading comment characters." (defun pp--format-vector (sexp) (prin1 sexp)) -(defun pp--format-list (sexp) +(defun pp--format-list (sexp &optional start) (if (and (symbolp (car sexp)) (not (keywordp (car sexp)))) (pp--format-function sexp) - (prin1 sexp))) + (insert "(") + (pp--insert start (pop sexp)) + (while sexp + (pp--insert " " (pop sexp))) + (insert ")"))) (defun pp--format-function (sexp) (let* ((sym (car sexp)) @@ -300,7 +312,11 @@ Ignores leading comment characters." (insert ")")) (defun pp--insert (delim &rest things) - (let ((start (point))) + (let ((start (if (markerp delim) + (prog1 + delim + (setq delim nil)) + (point-marker)))) (when delim (insert delim)) (dolist (thing things) @@ -310,7 +326,8 @@ Ignores leading comment characters." (when (> (current-column) (window-width)) (save-excursion (goto-char start) - (insert "\n"))))) + (unless (looking-at "[ \t]+$") + (insert "\n")))))) (defun pp--indent-buffer () (goto-char (point-min)) |