]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow pretty-printing results from `C-x C-e' in edebug
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 18 Jun 2022 11:26:14 +0000 (13:26 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 18 Jun 2022 11:26:23 +0000 (13:26 +0200)
* doc/lispref/edebug.texi (Edebug Eval): Document it.

* lisp/emacs-lisp/edebug.el (edebug-eval-expression): Allow
displaying the full value in a different buffer.

doc/lispref/edebug.texi
etc/NEWS
lisp/emacs-lisp/edebug.el

index 377cd21da8625dc68813ad9fd97da6fe8e6fea9d..622578bcf1c3e8437b34c7e1a6c86d065efdb35e 100644 (file)
@@ -719,7 +719,8 @@ Evaluate expression @var{exp} in the context of Edebug itself
 Evaluate the expression before point, in the context outside of Edebug
 (@code{edebug-eval-last-sexp}).  With the prefix argument of zero
 (@kbd{C-u 0 C-x C-e}), don't shorten long items (like strings and
-lists).
+lists).  Any other prefix will result in the value being
+pretty-printed in a separate buffer.
 @end table
 
 @cindex lexical binding (Edebug)
index f195a721f4d07d1e65b084b6dfe2c75e790b8247..a9c8957dfbb1768d038cb12d0ca57ad48f7abfbe 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1030,6 +1030,12 @@ which is a change in behaviour from previous Emacs versions.
 When invoked with a prefix argument, as in 'C-u e', this command will
 pop up a new buffer and show the full pretty-printed value there.
 
++++
+*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results.
+When invoked with a non-zero prefix argument, as in 'C-u C-x C-e',
+this command will pop up a new buffer and show the full pretty-printed
+value there.
+
 ** Compile
 
 +++
index 58cfd47abdf512764e85314bb313b49a69a5c2d0..ad66cfc2b8151a4e1dface17d67a1c6c930da972 100644 (file)
@@ -3746,21 +3746,25 @@ this is the prefix key.)"
      (t
       (princ result)))))
 
-(defun edebug-eval-last-sexp (&optional no-truncate)
+(defun edebug-eval-last-sexp (&optional display-type)
   "Evaluate sexp before point in the outside environment.
-Print value in minibuffer.
-
-If NO-TRUNCATE is non-nil (or interactively with a prefix
-argument of zero), show the full length of the expression, not
-limited by `edebug-print-length' or `edebug-print-level'."
+If DISPLAY-TYPE is `pretty-print' (interactively, a non-zero
+prefix argument), pretty-print the value in a separate buffer.
+Otherwise, print the value in minibuffer.  If DISPLAY-TYPE is any
+other non-nil value (or interactively with a prefix argument of
+zero), show the full length of the expression, not limited by
+`edebug-print-length' or `edebug-print-level'."
   (interactive
    (list (and current-prefix-arg
-              (zerop (prefix-numeric-value current-prefix-arg)))))
-  (if no-truncate
-      (let ((edebug-print-length nil)
-            (edebug-print-level nil))
-        (edebug-eval-expression (edebug-last-sexp)))
-    (edebug-eval-expression (edebug-last-sexp))))
+              (if (zerop (prefix-numeric-value current-prefix-arg))
+                  'no-truncate
+                'pretty-print))))
+  (if (or (null display-type)
+          (eq display-type 'pretty-print))
+      (edebug-eval-expression (edebug-last-sexp) display-type)
+    (let ((edebug-print-length nil)
+          (edebug-print-level nil))
+      (edebug-eval-expression (edebug-last-sexp)))))
 
 (defun edebug-eval-print-last-sexp (&optional no-truncate)
   "Evaluate sexp before point in outside environment; insert value.