From: Eli Zaretskii Date: Fri, 13 Jan 2023 08:39:58 +0000 (+0200) Subject: Fix minor issues with 'pp' and related commands X-Git-Tag: emacs-29.0.90~750 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2a2b1d09ac7;p=emacs.git 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) --- diff --git a/etc/NEWS b/etc/NEWS index 16d17821b78..08c7f8a4dd6 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -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'. diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el index ebda37419f7..e6e3cd6c6f4 100644 --- a/lisp/emacs-lisp/pp.el +++ b/lisp/emacs-lisp/pp.el @@ -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