diff options
| author | Stefan Monnier | 2025-03-06 13:02:37 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2025-03-06 13:02:37 -0500 |
| commit | 82affcaeff8b7a0ed1f30adbf5905f934c4cebaf (patch) | |
| tree | de01696fb6388cbac2b4bc10e80b380cf97ef0c6 | |
| parent | 1133c081d6787fdc9634388b33e04382182be5b0 (diff) | |
| download | emacs-82affcaeff8b7a0ed1f30adbf5905f934c4cebaf.tar.gz 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)
| -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." | |||
| 253 | ;; Place an extra debug-on-exit for macro's. | 253 | ;; Place an extra debug-on-exit for macro's. |
| 254 | (when (eq 'lambda (car-safe (cadr (backtrace-frame 1 base)))) | 254 | (when (eq 'lambda (car-safe (cadr (backtrace-frame 1 base)))) |
| 255 | (backtrace-debug 2 t base)))) | 255 | (backtrace-debug 2 t base)))) |
| 256 | (with-current-buffer debugger-buffer | 256 | (set-buffer debugger-buffer) |
| 257 | (unless (derived-mode-p 'debugger-mode) | 257 | (unless (derived-mode-p 'debugger-mode) |
| 258 | (debugger-mode)) | 258 | (debugger-mode)) |
| 259 | (debugger-setup-buffer debugger-args) | 259 | (debugger-setup-buffer debugger-args) |
| 260 | (when non-interactive-frame | 260 | (if non-interactive-frame |
| 261 | ;; If the backtrace is long, save the beginning | 261 | ;; If the backtrace is long, save the beginning |
| 262 | ;; and the end, but discard the middle. | 262 | ;; and the end, but discard the middle. |
| 263 | (let ((inhibit-read-only t)) | 263 | (let ((inhibit-read-only t)) |
| @@ -269,38 +269,37 @@ the debugger will not be entered." | |||
| 269 | (goto-char (point-max)) | 269 | (goto-char (point-max)) |
| 270 | (forward-line (- (/ debugger-batch-max-lines 2))) | 270 | (forward-line (- (/ debugger-batch-max-lines 2))) |
| 271 | (delete-region middlestart (point))) | 271 | (delete-region middlestart (point))) |
| 272 | (insert "...\n"))) | 272 | (insert "...\n")) |
| 273 | (message "%s" (buffer-string)) | 273 | (message "%s" (buffer-string))) |
| 274 | (kill-emacs -1))) | 274 | (pop-to-buffer |
| 275 | (pop-to-buffer | 275 | debugger-buffer |
| 276 | debugger-buffer | 276 | `((display-buffer-reuse-window |
| 277 | `((display-buffer-reuse-window | 277 | display-buffer-in-previous-window |
| 278 | display-buffer-in-previous-window | 278 | display-buffer-below-selected) |
| 279 | display-buffer-below-selected) | 279 | . ((window-min-height . 10) |
| 280 | . ((window-min-height . 10) | 280 | (window-height . fit-window-to-buffer) |
| 281 | (window-height . fit-window-to-buffer) | 281 | ,@(when (and (window-live-p debugger-previous-window) |
| 282 | ,@(when (and (window-live-p debugger-previous-window) | 282 | (frame-visible-p |
| 283 | (frame-visible-p | 283 | (window-frame debugger-previous-window))) |
| 284 | (window-frame debugger-previous-window))) | 284 | `((previous-window . ,debugger-previous-window)))))) |
| 285 | `((previous-window . ,debugger-previous-window)))))) | 285 | (setq debugger-window (selected-window)) |
| 286 | (setq debugger-window (selected-window)) | 286 | (when debugger-jumping-flag |
| 287 | (when debugger-jumping-flag | 287 | ;; Try to restore previous height of debugger |
| 288 | ;; Try to restore previous height of debugger | 288 | ;; window. |
| 289 | ;; window. | 289 | (condition-case nil |
| 290 | (condition-case nil | 290 | (window-resize |
| 291 | (window-resize | 291 | debugger-window |
| 292 | debugger-window | 292 | (- debugger-previous-window-height |
| 293 | (- debugger-previous-window-height | 293 | (window-total-height debugger-window))) |
| 294 | (window-total-height debugger-window))) | 294 | (error nil)) |
| 295 | (error nil)) | 295 | (setq debugger-previous-window debugger-window)) |
| 296 | (setq debugger-previous-window debugger-window)) | 296 | (message "") |
| 297 | (message "") | 297 | (let ((standard-output nil) |
| 298 | (let ((standard-output nil) | 298 | (buffer-read-only t)) |
| 299 | (buffer-read-only t)) | 299 | (message "") |
| 300 | (message "") | 300 | ;; Make sure we unbind buffer-read-only in the right buffer. |
| 301 | ;; Make sure we unbind buffer-read-only in the right buffer. | 301 | (save-excursion |
| 302 | (save-excursion | 302 | (recursive-edit))))) |
| 303 | (recursive-edit)))) | ||
| 304 | (when (and (window-live-p debugger-window) | 303 | (when (and (window-live-p debugger-window) |
| 305 | (eq (window-buffer debugger-window) debugger-buffer)) | 304 | (eq (window-buffer debugger-window) debugger-buffer)) |
| 306 | ;; Record height of debugger window. | 305 | ;; Record height of debugger window. |