bug-gnu-emacs
[Top][All Lists]
Advanced

[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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]