1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-24 06:20:43 -08:00

Fix minor issues with 'pp' and related commands

* etc/NEWS:
* lisp/emacs-lisp/pp.el (pp-use-max-width, pp-emacs-lisp-code):
Mention in doc string that formatting via 'pp-emacs-lisp-code'
could be slow.
(pp-eval-expression, pp-macroexpand-expression): Honor
'pp-use-max-width'.  (Bug#58687)
This commit is contained in:
Eli Zaretskii 2023-01-13 10:39:58 +02:00
parent dfb38fb2ee
commit 2a2b1d09ac
2 changed files with 20 additions and 10 deletions

View file

@ -4321,15 +4321,21 @@ whose matches are to be replaced. If these variables are nil (which
is the default), 'query-replace' and 'query-replace-regexp' take the
default value from the previous FROM-TO pair.
---
** New user option 'pp-use-max-width'.
If non-nil, 'pp' will attempt to limit the line length when formatting
long lists and vectors.
** Lisp pretty-printer ('pp')
---
** New function 'pp-emacs-lisp-code'.
*** New function 'pp-emacs-lisp-code'.
'pp' formats general Lisp sexps. This function does much the same,
but applies formatting rules appropriate for Emacs Lisp code.
but applies formatting rules appropriate for Emacs Lisp code. Note
that this could currently be quite slow, and is thus appropriate only
for relatively small code fragments.
---
*** New user option 'pp-use-max-width'.
If non-nil, 'pp' and all 'pp-*' commands that format the results, will
attempt to limit the line length when formatting long lists and
vectors. This uses 'pp-emacs-lisp-code', and thus could be slow for
large lists.
+++
** New function 'file-has-changed-p'.

View file

@ -47,7 +47,9 @@ Otherwise this should be a number."
(defcustom pp-use-max-width nil
"If non-nil, `pp'-related functions will try to fold lines.
The target width is given by the `pp-max-width' variable."
The target width is given by the `pp-max-width' variable.
Note that this could slow down `pp' considerably when formatting
large lists."
:type 'boolean
:version "29.1")
@ -162,14 +164,15 @@ Also add the value to the front of the list in the variable `values'."
(message "Evaluating...")
(let ((result (eval expression lexical-binding)))
(values--store-value result)
(pp-display-expression result "*Pp Eval Output*")))
(pp-display-expression result "*Pp Eval Output*" pp-use-max-width)))
;;;###autoload
(defun pp-macroexpand-expression (expression)
"Macroexpand EXPRESSION and pretty-print its value."
(interactive
(list (read--expression "Macroexpand: ")))
(pp-display-expression (macroexpand-1 expression) "*Pp Macroexpand Output*"))
(pp-display-expression (macroexpand-1 expression) "*Pp Macroexpand Output*"
pp-use-max-width))
(defun pp-last-sexp ()
"Read sexp before point. Ignore leading comment characters."
@ -219,7 +222,8 @@ Ignores leading comment characters."
;;;###autoload
(defun pp-emacs-lisp-code (sexp)
"Insert SEXP into the current buffer, formatted as Emacs Lisp code.
Use the `pp-max-width' variable to control the desired line length."
Use the `pp-max-width' variable to control the desired line length.
Note that this could be slow for large SEXPs."
(require 'edebug)
(let ((obuf (current-buffer)))
(with-temp-buffer