[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#12921: 24.2.50; resizing backtrace buffer not persistent (again)
From: |
martin rudalics |
Subject: |
bug#12921: 24.2.50; resizing backtrace buffer not persistent (again) |
Date: |
Sun, 18 Nov 2012 12:36:52 +0100 |
> In emacs -Q, type M-x debug. The frame gets split vertically. The
> window below displays *Backtrace*. But dragging the mode-line in the
> middle doesn't resize the window persistently when you step in the
> debugger.
>
> Resizing is performed here in these lines of `debug':
>
> (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-size debugger-window)))
> (error nil)))
> (setq debugger-previous-window debugger-window))
>
> However, in the above case, (eq debugger-previous-window
> debugger-window) is never true, probably because the vertical splitting
> into two windows is performed and undone on each step.
>
> Would it be harmful to perform resizing unconditionally? This fixes
> the problem for me, but I'm not sure if it could be harmful in certain
> situations. OTOH, if the window was created newly when the debugger had
> been reentered, we already changed the window layout, so forcing a
> certain size should not be dangerous, in general.
You mean a patch like the below? Note that I have no idea how the
debugger should behave when the window layout is changed by the debugged
code.
martin
*** lisp/emacs-lisp/debug.el 2012-11-11 01:16:25 +0000
--- lisp/emacs-lisp/debug.el 2012-11-18 09:55:27 +0000
***************
*** 228,247 ****
debugger-buffer
`((display-buffer-reuse-window
display-buffer-in-previous-window)
! . (,(when 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-size debugger-window)))
! (error nil)))
! (setq debugger-previous-window debugger-window))
(debugger-mode)
(debugger-setup-buffer debugger-args)
(when noninteractive
--- 228,246 ----
debugger-buffer
`((display-buffer-reuse-window
display-buffer-in-previous-window)
! . (,(when 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-size debugger-window)))
! (error nil)))
! (setq debugger-previous-window debugger-window)
(debugger-mode)
(debugger-setup-buffer debugger-args)
(when noninteractive