diff options
| author | Lars Ingebrigtsen | 2022-06-14 14:38:05 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2022-06-14 14:38:05 +0200 |
| commit | a02bb84c80f63a7b1199f0e68d605f7d418167fd (patch) | |
| tree | a2f0b211013a4ec14e3651f155f569a8e7e16b74 | |
| parent | bea90d8de27e673a039a71e15a08bcb0cb6f7011 (diff) | |
| download | emacs-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/NEWS | 7 | ||||
| -rw-r--r-- | lisp/emacs-lisp/debug.el | 11 |
2 files changed, 12 insertions, 6 deletions
| @@ -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. | ||
| 1002 | Instead it just buries the buffer and switches the mode from | ||
| 1003 | 'debugger-mode' to 'backtrace-mode', since commands like 'e' are no | ||
| 1004 | longer available after exiting the recursive edit. | ||
| 1005 | |||
| 1006 | +++ | ||
| 1000 | *** New user option 'debug-allow-recursive-debug'. | 1007 | *** New user option 'debug-allow-recursive-debug'. |
| 1001 | This user option controls whether the 'e' (in a "*Backtrace*" | 1008 | This user option controls whether the 'e' (in a "*Backtrace*" |
| 1002 | buffer or while edebugging) and 'C-x C-e' (while edebugging) commands | 1009 | buffer 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) |