Skip to content

Commit

Permalink
pp-fill: Fix tests breakage
Browse files Browse the repository at this point in the history
* lisp/emacs-lisp/pp.el (pp-to-string, pp-buffer, pp): Preserve old
behavior of (almost always) returning a trailing newline.

* test/lisp/emacs-lisp/pp-tests.el (pp-print-quote): Adjust tests, now
that `pp-to-string` always returns a trailing newline, rather than only
most of the time.

* test/lisp/emacs-lisp/backtrace-tests.el
(backtrace-tests--single-and-multi-line): Make the test less sensitive
to the choice of what is "pretty".
  • Loading branch information
monnier committed Jun 17, 2023
1 parent 017475a commit a9c962b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
13 changes: 11 additions & 2 deletions lisp/emacs-lisp/pp.el
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,8 @@ Optional argument PP-FUNCTION overrides `pp-default-function'."
(lisp-mode-variables nil)
(set-syntax-table emacs-lisp-mode-syntax-table)
(funcall (or pp-function pp-default-function) object)
;; Preserve old behavior of (usually) finishing with a newline.
(unless (bolp) (insert "\n"))
(buffer-string)))

(defun pp--within-fill-column-p ()
Expand Down Expand Up @@ -236,7 +238,12 @@ it inserts and pretty-prints that arg at point."
(defun pp-buffer ()
"Prettify the current buffer with printed representation of a Lisp object."
(interactive)
(funcall pp-default-function (point-min) (point-max)))
(funcall pp-default-function (point-min) (point-max))
;; Preserve old behavior of (usually) finishing with a newline and
;; with point at BOB.
(goto-char (point-max))
(unless (bolp) (insert "\n"))
(goto-char (point-min)))

(defun pp-28 (beg &optional end) ;FIXME: Better name?
"Prettify the current region with printed representation of a Lisp object.
Expand Down Expand Up @@ -283,7 +290,9 @@ Output stream is STREAM, or value of `standard-output' (which see)."
(eq (syntax-table) emacs-lisp-mode-syntax-table)
(eq indent-line-function #'lisp-indent-line))
;; Skip the buffer->string->buffer middle man.
(funcall pp-default-function object))
(funcall pp-default-function object)
;; Preserve old behavior of (usually) finishing with a newline.
(unless (bolp) (insert "\n")))
(t
(princ (pp-to-string object) (or stream standard-output)))))

Expand Down
6 changes: 5 additions & 1 deletion test/lisp/emacs-lisp/backtrace-tests.el
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,9 @@
"Forms in backtrace frames can be on a single line or on multiple lines."
(ert-with-test-buffer (:name "single-multi-line")
(let* ((arg '(lambda (x) ; Quote this so it isn't made into a closure.
;; Make the form long enough so `number' should not
;; appear on the first line once pretty-printed.
(interactive (region-beginning))
(let ((number (1+ x)))
(+ x number))))
(header-string "Test header: ")
Expand Down Expand Up @@ -280,7 +283,8 @@ line contains the strings \"lambda\" and \"number\"."
;; Verify that the form is now back on one line,
;; and that point is at the same place.
(should (string= (backtrace-tests--get-substring
(- (point) 6) (point)) "number"))
(- (point) 6) (point))
"number"))
(should-not (= (point) (pos-bol)))
(should (string= (backtrace-tests--get-substring
(pos-bol) (1+ (pos-eol)))
Expand Down
4 changes: 2 additions & 2 deletions test/lisp/emacs-lisp/pp-tests.el
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
(require 'ert-x)

(ert-deftest pp-print-quote ()
(should (string= (pp-to-string 'quote) "quote"))
(should (string= (pp-to-string ''quote) "'quote"))
(should (string= (pp-to-string 'quote) "quote\n"))
(should (string= (pp-to-string ''quote) "'quote\n"))
(should (string= (pp-to-string '('a 'b)) "('a 'b)\n"))
(should (string= (pp-to-string '(''quote 'quote)) "(''quote 'quote)\n"))
(should (string= (pp-to-string '(quote)) "(quote)\n"))
Expand Down

0 comments on commit a9c962b

Please sign in to comment.