Set up debugger buffer earlier and fit window to it (Bug#32825)
* lisp/emacs-lisp/debug.el (debug): Set up debugger buffer before displaying it and advise 'display-buffer' to fit the window to it (Bug#32825).
This commit is contained in:
parent
092b36dbd6
commit
bbc7015e7b
1 changed files with 27 additions and 25 deletions
|
@ -236,31 +236,10 @@ first will be printed into the backtrace buffer."
|
|||
;; Place an extra debug-on-exit for macro's.
|
||||
(when (eq 'lambda (car-safe (cadr (backtrace-frame 4))))
|
||||
(backtrace-debug 5 t)))
|
||||
(pop-to-buffer
|
||||
debugger-buffer
|
||||
`((display-buffer-reuse-window
|
||||
display-buffer-in-previous-window
|
||||
display-buffer-below-selected)
|
||||
. ((window-min-height . 10)
|
||||
,@(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))
|
||||
(if (eq debugger-previous-window debugger-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))
|
||||
(unless (derived-mode-p 'debugger-mode)
|
||||
(debugger-mode))
|
||||
(debugger-setup-buffer debugger-args)
|
||||
(with-current-buffer debugger-buffer
|
||||
(unless (derived-mode-p 'debugger-mode)
|
||||
(debugger-mode))
|
||||
(debugger-setup-buffer debugger-args))
|
||||
(when noninteractive
|
||||
;; If the backtrace is long, save the beginning
|
||||
;; and the end, but discard the middle.
|
||||
|
@ -277,6 +256,29 @@ first will be printed into the backtrace buffer."
|
|||
(goto-char (point-min))
|
||||
(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))
|
||||
(if (eq debugger-previous-window debugger-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))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue