summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2025-03-06 13:02:37 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2025-03-06 13:02:37 -0500
commit82affcaeff8b7a0ed1f30adbf5905f934c4cebaf (patch)
treede01696fb6388cbac2b4bc10e80b380cf97ef0c6 /lisp/emacs-lisp
parent1133c081d6787fdc9634388b33e04382182be5b0 (diff)
downloademacs-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')
-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."
;; 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.