emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/geiser 68e0991: Fix: allow implementations to tell us if t


From: ELPA Syncer
Subject: [nongnu] elpa/geiser 68e0991: Fix: allow implementations to tell us if they entered their debugger
Date: Fri, 19 Nov 2021 21:57:36 -0500 (EST)

branch: elpa/geiser
commit 68e0991c96b1e5bc9a1d748a05a96127c6204987
Author: jao <jao@gnu.org>
Commit: jao <jao@gnu.org>

    Fix: allow implementations to tell us if they entered their debugger
    
    We were always displaying the debug buffer, regardless, which is not
    what we want: upon entering a debugger, we switch to the repl, and all
    the needed info is already there.
---
 elisp/geiser-debug.el | 55 ++++++++++++++++++++++++++-------------------------
 1 file changed, 28 insertions(+), 27 deletions(-)

diff --git a/elisp/geiser-debug.el b/elisp/geiser-debug.el
index fe1c85d..c2194d2 100644
--- a/elisp/geiser-debug.el
+++ b/elisp/geiser-debug.el
@@ -163,34 +163,35 @@ buffer.")
          (dir default-directory)
          (buffer (current-buffer))
          (debug (eq key 'geiser-debugger))
+         (debug-entered (when debug
+                          (switch-to-geiser nil nil buffer)
+                          (geiser-debug--enter-debugger impl)))
          (after (geiser-debug--display-after what)))
-    (when debug
-      (switch-to-geiser nil nil buffer)
-      (geiser-debug--enter-debugger impl))
-    (geiser-debug--with-buffer
-      (erase-buffer)
-      (when dir (setq default-directory dir))
-      (unless after (insert what "\n\n"))
-      (setq img (when (and res (not err)) (geiser-debug--insert-res res)))
-      (when (or err key output)
-        (or (geiser-debug--display-error impl module key output)
-            (insert "\n" (if key (format "%s\n" key) "") output "\n")))
-      (when after
-        (goto-char (point-max))
-        (insert "\nExpression evaluated was:\n\n")
-        (insert what "\n"))
-      (cl-case geiser-debug-treat-ansi-colors
-        (colors (ansi-color-apply-on-region (point-min) (point-max)))
-        (remove (ansi-color-filter-region (point-min) (point-max))))
-      (goto-char (point-min)))
-    (when (or img err output)
-      (when (or geiser-debug-jump-to-debug-p geiser-debug-show-debug-p)
-        (if geiser-debug-jump-to-debug-p
-            (geiser-debug--pop-to-buffer)
-          (display-buffer (geiser-debug--buffer))))
-      (when err
-        (ignore-errors (next-error))
-        (message "=> %s" output)))))
+    (unless debug-entered
+      (geiser-debug--with-buffer
+        (erase-buffer)
+        (when dir (setq default-directory dir))
+        (unless after (insert what "\n\n"))
+        (setq img (when (and res (not err)) (geiser-debug--insert-res res)))
+        (when (or err key output)
+          (or (geiser-debug--display-error impl module key output)
+              (insert "\n" (if key (format "%s\n" key) "") output "\n")))
+        (when after
+          (goto-char (point-max))
+          (insert "\nExpression evaluated was:\n\n")
+          (insert what "\n"))
+        (cl-case geiser-debug-treat-ansi-colors
+          (colors (ansi-color-apply-on-region (point-min) (point-max)))
+          (remove (ansi-color-filter-region (point-min) (point-max))))
+        (goto-char (point-min)))
+      (when (or img err output)
+        (when (or geiser-debug-jump-to-debug-p geiser-debug-show-debug-p)
+          (if geiser-debug-jump-to-debug-p
+              (geiser-debug--pop-to-buffer)
+            (display-buffer (geiser-debug--buffer))))
+        (when err
+          (ignore-errors (next-error))
+          (message "=> %s" output))))))
 
 (defsubst geiser-debug--wrap-region (str)
   (format "(begin %s\n)" str))



reply via email to

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