emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 606275e91e: Allow pretty-printing results from `C-x C-e' in edebu


From: Lars Ingebrigtsen
Subject: master 606275e91e: Allow pretty-printing results from `C-x C-e' in edebug
Date: Sat, 18 Jun 2022 07:26:28 -0400 (EDT)

branch: master
commit 606275e91ec57cccabeb4ac2feb93753f734cb00
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Allow pretty-printing results from `C-x C-e' in edebug
    
    * 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   |  3 ++-
 etc/NEWS                  |  6 ++++++
 lisp/emacs-lisp/edebug.el | 28 ++++++++++++++++------------
 3 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi
index 377cd21da8..622578bcf1 100644
--- a/doc/lispref/edebug.texi
+++ b/doc/lispref/edebug.texi
@@ -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)
diff --git a/etc/NEWS b/etc/NEWS
index f195a721f4..a9c8957dfb 100644
--- 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
 
 +++
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 58cfd47abd..ad66cfc2b8 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]