Make lambda/closure help buttons format as Emacs Lisp

* lisp/help.el (help--describe-command): Format lambda/closures as
Emacs Lisp.

* lisp/emacs-lisp/pp.el (pp-display-expression): Allow formatting
as Emacs Lisp.
This commit is contained in:
Lars Ingebrigtsen 2021-11-04 21:52:56 +01:00
parent 6cf86ed4c1
commit 292f50d27b
2 changed files with 8 additions and 3 deletions

View file

@ -90,8 +90,10 @@ Output stream is STREAM, or value of `standard-output' (which see)."
(princ (pp-to-string object) (or stream standard-output)))
;;;###autoload
(defun pp-display-expression (expression out-buffer-name)
(defun pp-display-expression (expression out-buffer-name &optional lisp)
"Prettify and display EXPRESSION in an appropriate way, depending on length.
If LISP, format with `pp-emacs-lisp-code'; use `pp' otherwise.
If a temporary buffer is needed for representation, it will be named
after OUT-BUFFER-NAME."
(let* ((old-show-function temp-buffer-show-function)
@ -119,7 +121,10 @@ after OUT-BUFFER-NAME."
(message "See buffer %s." out-buffer-name)))
(message "%s" (buffer-substring (point-min) (point))))))))
(with-output-to-temp-buffer out-buffer-name
(pp expression)
(if lisp
(with-current-buffer standard-output
(pp-emacs-lisp-code expression))
(pp expression))
(with-current-buffer standard-output
(emacs-lisp-mode)
(setq buffer-read-only nil)

View file

@ -1347,7 +1347,7 @@ Return nil if the key sequence is too long."
(symbol-name (car definition))
(lambda (_)
(pp-display-expression
definition "*Help Source*"))))))
definition "*Help Source*" t))))))
(t
(insert "??\n"))))