aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2022-06-14 14:38:05 +0200
committerLars Ingebrigtsen2022-06-14 14:38:05 +0200
commita02bb84c80f63a7b1199f0e68d605f7d418167fd (patch)
treea2f0b211013a4ec14e3651f155f569a8e7e16b74
parentbea90d8de27e673a039a71e15a08bcb0cb6f7011 (diff)
downloademacs-a02bb84c80f63a7b1199f0e68d605f7d418167fd.tar.gz
emacs-a02bb84c80f63a7b1199f0e68d605f7d418167fd.zip
Leave the contents on the *Backtrace* buffer on `q'
* lisp/emacs-lisp/debug.el (debug): Don't clear the contents of the buffer on `q' (bug#55863).
-rw-r--r--etc/NEWS7
-rw-r--r--lisp/emacs-lisp/debug.el11
2 files changed, 12 insertions, 6 deletions
diff --git a/etc/NEWS b/etc/NEWS
index 73416fb30cd..19ca21f666d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -997,6 +997,13 @@ inadvertently delete the "*scratch*" buffer.
997 997
998** Debugging 998** Debugging
999 999
1000---
1001*** 'q' in a *Backtrace* buffer no longer clears the buffer.
1002Instead it just buries the buffer and switches the mode from
1003'debugger-mode' to 'backtrace-mode', since commands like 'e' are no
1004longer available after exiting the recursive edit.
1005
1006+++
1000*** New user option 'debug-allow-recursive-debug'. 1007*** New user option 'debug-allow-recursive-debug'.
1001This user option controls whether the 'e' (in a "*Backtrace*" 1008This user option controls whether the 'e' (in a "*Backtrace*"
1002buffer or while edebugging) and 'C-x C-e' (while edebugging) commands 1009buffer or while edebugging) and 'C-x C-e' (while edebugging) commands
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 6c172d6c31d..c4929eb2b01 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -305,16 +305,15 @@ the debugger will not be entered."
305 (set-buffer debugger-old-buffer))) 305 (set-buffer debugger-old-buffer)))
306 ;; Forget debugger window, it won't be back (Bug#17882). 306 ;; Forget debugger window, it won't be back (Bug#17882).
307 (setq debugger-previous-window nil)) 307 (setq debugger-previous-window nil))
308 ;; Restore previous state of debugger-buffer in case we were 308 ;; Restore previous state of debugger-buffer in case we
309 ;; in a recursive invocation of the debugger, otherwise just 309 ;; were in a recursive invocation of the debugger,
310 ;; erase the buffer. 310 ;; otherwise just exit (after changing the mode, since we
311 ;; can't interact with the buffer in the same way).
311 (when (buffer-live-p debugger-buffer) 312 (when (buffer-live-p debugger-buffer)
312 (with-current-buffer debugger-buffer 313 (with-current-buffer debugger-buffer
313 (if debugger-previous-state 314 (if debugger-previous-state
314 (debugger--restore-buffer-state debugger-previous-state) 315 (debugger--restore-buffer-state debugger-previous-state)
315 (setq backtrace-insert-header-function nil) 316 (backtrace-mode))))
316 (setq backtrace-frames nil)
317 (backtrace-print))))
318 (with-timeout-unsuspend debugger-with-timeout-suspend) 317 (with-timeout-unsuspend debugger-with-timeout-suspend)
319 (set-match-data debugger-outer-match-data))) 318 (set-match-data debugger-outer-match-data)))
320 (setq debug-on-next-call debugger-step-after-exit) 319 (setq debug-on-next-call debugger-step-after-exit)