]> git.eshelyaron.com Git - emacs.git/commitdiff
Leave the contents on the *Backtrace* buffer on `q'
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 14 Jun 2022 12:38:05 +0000 (14:38 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 14 Jun 2022 12:38:05 +0000 (14:38 +0200)
* lisp/emacs-lisp/debug.el (debug): Don't clear the contents of
the buffer on `q' (bug#55863).

etc/NEWS
lisp/emacs-lisp/debug.el

index 73416fb30cda4bd33c976b2c533cdb12da142e0a..19ca21f666d2042cdab3f9c96af934aab44572bf 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -997,6 +997,13 @@ inadvertently delete the "*scratch*" buffer.
 
 ** Debugging
 
+---
+*** 'q' in a *Backtrace* buffer no longer clears the buffer.
+Instead it just buries the buffer and switches the mode from
+'debugger-mode' to 'backtrace-mode', since commands like 'e' are no
+longer available after exiting the recursive edit.
+
++++
 *** New user option 'debug-allow-recursive-debug'.
 This user option controls whether the 'e' (in a "*Backtrace*"
 buffer or while edebugging) and 'C-x C-e' (while edebugging) commands
index 6c172d6c31da98c55df743b541f5e2fb6eeb71c3..c4929eb2b0138e06d38aebef6c66a16219b183b3 100644 (file)
@@ -305,16 +305,15 @@ the debugger will not be entered."
                  (set-buffer debugger-old-buffer)))
               ;; Forget debugger window, it won't be back (Bug#17882).
               (setq debugger-previous-window nil))
-            ;; Restore previous state of debugger-buffer in case we were
-            ;; in a recursive invocation of the debugger, otherwise just
-            ;; erase the buffer.
+            ;; Restore previous state of debugger-buffer in case we
+            ;; were in a recursive invocation of the debugger,
+            ;; otherwise just exit (after changing the mode, since we
+            ;; can't interact with the buffer in the same way).
            (when (buffer-live-p debugger-buffer)
              (with-current-buffer debugger-buffer
                (if debugger-previous-state
                     (debugger--restore-buffer-state debugger-previous-state)
-                  (setq backtrace-insert-header-function nil)
-                  (setq backtrace-frames nil)
-                  (backtrace-print))))
+                  (backtrace-mode))))
            (with-timeout-unsuspend debugger-with-timeout-suspend)
            (set-match-data debugger-outer-match-data)))
         (setq debug-on-next-call debugger-step-after-exit)