aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2025-03-06 13:02:37 -0500
committerStefan Monnier2025-03-06 13:02:37 -0500
commit82affcaeff8b7a0ed1f30adbf5905f934c4cebaf (patch)
treede01696fb6388cbac2b4bc10e80b380cf97ef0c6
parent1133c081d6787fdc9634388b33e04382182be5b0 (diff)
downloademacs-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.el73
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.