diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2025-03-06 13:02:37 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2025-03-06 13:02:37 -0500 |
commit | 82affcaeff8b7a0ed1f30adbf5905f934c4cebaf (patch) | |
tree | de01696fb6388cbac2b4bc10e80b380cf97ef0c6 /lisp/emacs-lisp/debug.el | |
parent | 1133c081d6787fdc9634388b33e04382182be5b0 (diff) | |
download | emacs-82affcaeff8b7a0ed1f30adbf5905f934c4cebaf.tar.gz emacs-82affcaeff8b7a0ed1f30adbf5905f934c4cebaf.tar.bz2 emacs-82affcaeff8b7a0ed1f30adbf5905f934c4cebaf.zip |
(debug): Don't `kill-emacs` upon exit when in batch mode
AFAICT this is a left over code from many years ago before
the `debug` special case was added to `condition-case` and
at a time where exiting from `debug` did not proceed to handle
remaining handlers.
In the usual case where we indeed want to kill Emacs,
`signal_or_quit` does it for us.
* lisp/emacs-lisp/debug.el (debug): Don't `kill-emacs` upon exit
when in batch mode (bug#76786)
Diffstat (limited to 'lisp/emacs-lisp/debug.el')
-rw-r--r-- | lisp/emacs-lisp/debug.el | 73 |
1 files changed, 36 insertions, 37 deletions
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 0ca3a0f931c..f8af6eafa32 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -253,11 +253,11 @@ the debugger will not be entered." ;; Place an extra debug-on-exit for macro's. (when (eq 'lambda (car-safe (cadr (backtrace-frame 1 base)))) (backtrace-debug 2 t base)))) - (with-current-buffer debugger-buffer - (unless (derived-mode-p 'debugger-mode) - (debugger-mode)) - (debugger-setup-buffer debugger-args) - (when non-interactive-frame + (set-buffer debugger-buffer) + (unless (derived-mode-p 'debugger-mode) + (debugger-mode)) + (debugger-setup-buffer debugger-args) + (if non-interactive-frame ;; If the backtrace is long, save the beginning ;; and the end, but discard the middle. (let ((inhibit-read-only t)) @@ -269,38 +269,37 @@ the debugger will not be entered." (goto-char (point-max)) (forward-line (- (/ debugger-batch-max-lines 2))) (delete-region middlestart (point))) - (insert "...\n"))) - (message "%s" (buffer-string)) - (kill-emacs -1))) - (pop-to-buffer - debugger-buffer - `((display-buffer-reuse-window - display-buffer-in-previous-window - display-buffer-below-selected) - . ((window-min-height . 10) - (window-height . fit-window-to-buffer) - ,@(when (and (window-live-p debugger-previous-window) - (frame-visible-p - (window-frame debugger-previous-window))) - `((previous-window . ,debugger-previous-window)))))) - (setq debugger-window (selected-window)) - (when debugger-jumping-flag - ;; Try to restore previous height of debugger - ;; window. - (condition-case nil - (window-resize - debugger-window - (- debugger-previous-window-height - (window-total-height debugger-window))) - (error nil)) - (setq debugger-previous-window debugger-window)) - (message "") - (let ((standard-output nil) - (buffer-read-only t)) - (message "") - ;; Make sure we unbind buffer-read-only in the right buffer. - (save-excursion - (recursive-edit)))) + (insert "...\n")) + (message "%s" (buffer-string))) + (pop-to-buffer + debugger-buffer + `((display-buffer-reuse-window + display-buffer-in-previous-window + display-buffer-below-selected) + . ((window-min-height . 10) + (window-height . fit-window-to-buffer) + ,@(when (and (window-live-p debugger-previous-window) + (frame-visible-p + (window-frame debugger-previous-window))) + `((previous-window . ,debugger-previous-window)))))) + (setq debugger-window (selected-window)) + (when debugger-jumping-flag + ;; Try to restore previous height of debugger + ;; window. + (condition-case nil + (window-resize + debugger-window + (- debugger-previous-window-height + (window-total-height debugger-window))) + (error nil)) + (setq debugger-previous-window debugger-window)) + (message "") + (let ((standard-output nil) + (buffer-read-only t)) + (message "") + ;; Make sure we unbind buffer-read-only in the right buffer. + (save-excursion + (recursive-edit))))) (when (and (window-live-p debugger-window) (eq (window-buffer debugger-window) debugger-buffer)) ;; Record height of debugger window. |