diff options
| author | Eli Zaretskii | 2023-01-13 10:39:58 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2023-01-13 10:39:58 +0200 |
| commit | 2a2b1d09ac77f66629cb5b968d5f7e6451a2c8a9 (patch) | |
| tree | ae899fc78aa4492d3de80e42f9022be0aa5e2df8 | |
| parent | dfb38fb2ee623a78f7e7e15e0b6f11e4768cef48 (diff) | |
| download | emacs-2a2b1d09ac77f66629cb5b968d5f7e6451a2c8a9.tar.gz emacs-2a2b1d09ac77f66629cb5b968d5f7e6451a2c8a9.zip | |
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)
| -rw-r--r-- | etc/NEWS | 18 | ||||
| -rw-r--r-- | lisp/emacs-lisp/pp.el | 12 |
2 files changed, 20 insertions, 10 deletions
| @@ -4321,15 +4321,21 @@ whose matches are to be replaced. If these variables are nil (which | |||
| 4321 | is the default), 'query-replace' and 'query-replace-regexp' take the | 4321 | is the default), 'query-replace' and 'query-replace-regexp' take the |
| 4322 | default value from the previous FROM-TO pair. | 4322 | default value from the previous FROM-TO pair. |
| 4323 | 4323 | ||
| 4324 | --- | 4324 | ** Lisp pretty-printer ('pp') |
| 4325 | ** New user option 'pp-use-max-width'. | ||
| 4326 | If non-nil, 'pp' will attempt to limit the line length when formatting | ||
| 4327 | long lists and vectors. | ||
| 4328 | 4325 | ||
| 4329 | --- | 4326 | --- |
| 4330 | ** New function 'pp-emacs-lisp-code'. | 4327 | *** New function 'pp-emacs-lisp-code'. |
| 4331 | 'pp' formats general Lisp sexps. This function does much the same, | 4328 | 'pp' formats general Lisp sexps. This function does much the same, |
| 4332 | but applies formatting rules appropriate for Emacs Lisp code. | 4329 | but applies formatting rules appropriate for Emacs Lisp code. Note |
| 4330 | that this could currently be quite slow, and is thus appropriate only | ||
| 4331 | for relatively small code fragments. | ||
| 4332 | |||
| 4333 | --- | ||
| 4334 | *** New user option 'pp-use-max-width'. | ||
| 4335 | If non-nil, 'pp' and all 'pp-*' commands that format the results, will | ||
| 4336 | attempt to limit the line length when formatting long lists and | ||
| 4337 | vectors. This uses 'pp-emacs-lisp-code', and thus could be slow for | ||
| 4338 | large lists. | ||
| 4333 | 4339 | ||
| 4334 | +++ | 4340 | +++ |
| 4335 | ** New function 'file-has-changed-p'. | 4341 | ** 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." | |||
| 47 | 47 | ||
| 48 | (defcustom pp-use-max-width nil | 48 | (defcustom pp-use-max-width nil |
| 49 | "If non-nil, `pp'-related functions will try to fold lines. | 49 | "If non-nil, `pp'-related functions will try to fold lines. |
| 50 | The target width is given by the `pp-max-width' variable." | 50 | The target width is given by the `pp-max-width' variable. |
| 51 | Note that this could slow down `pp' considerably when formatting | ||
| 52 | large lists." | ||
| 51 | :type 'boolean | 53 | :type 'boolean |
| 52 | :version "29.1") | 54 | :version "29.1") |
| 53 | 55 | ||
| @@ -162,14 +164,15 @@ Also add the value to the front of the list in the variable `values'." | |||
| 162 | (message "Evaluating...") | 164 | (message "Evaluating...") |
| 163 | (let ((result (eval expression lexical-binding))) | 165 | (let ((result (eval expression lexical-binding))) |
| 164 | (values--store-value result) | 166 | (values--store-value result) |
| 165 | (pp-display-expression result "*Pp Eval Output*"))) | 167 | (pp-display-expression result "*Pp Eval Output*" pp-use-max-width))) |
| 166 | 168 | ||
| 167 | ;;;###autoload | 169 | ;;;###autoload |
| 168 | (defun pp-macroexpand-expression (expression) | 170 | (defun pp-macroexpand-expression (expression) |
| 169 | "Macroexpand EXPRESSION and pretty-print its value." | 171 | "Macroexpand EXPRESSION and pretty-print its value." |
| 170 | (interactive | 172 | (interactive |
| 171 | (list (read--expression "Macroexpand: "))) | 173 | (list (read--expression "Macroexpand: "))) |
| 172 | (pp-display-expression (macroexpand-1 expression) "*Pp Macroexpand Output*")) | 174 | (pp-display-expression (macroexpand-1 expression) "*Pp Macroexpand Output*" |
| 175 | pp-use-max-width)) | ||
| 173 | 176 | ||
| 174 | (defun pp-last-sexp () | 177 | (defun pp-last-sexp () |
| 175 | "Read sexp before point. Ignore leading comment characters." | 178 | "Read sexp before point. Ignore leading comment characters." |
| @@ -219,7 +222,8 @@ Ignores leading comment characters." | |||
| 219 | ;;;###autoload | 222 | ;;;###autoload |
| 220 | (defun pp-emacs-lisp-code (sexp) | 223 | (defun pp-emacs-lisp-code (sexp) |
| 221 | "Insert SEXP into the current buffer, formatted as Emacs Lisp code. | 224 | "Insert SEXP into the current buffer, formatted as Emacs Lisp code. |
| 222 | Use the `pp-max-width' variable to control the desired line length." | 225 | Use the `pp-max-width' variable to control the desired line length. |
| 226 | Note that this could be slow for large SEXPs." | ||
| 223 | (require 'edebug) | 227 | (require 'edebug) |
| 224 | (let ((obuf (current-buffer))) | 228 | (let ((obuf (current-buffer))) |
| 225 | (with-temp-buffer | 229 | (with-temp-buffer |