GNU bug report logs -
#410
23.0.60; display-buffer regression
Previous Next
Full log
View this message in rfc822 format
> The recent reimplementation of display-buffer in lisp resulted in the
> following changed behavior, which I consider a regression:
>
> 1. emacs -Q
>
> 2. M-x calendar
> ==> The window is vertically split, the *scratch* buffer above and
> the Calendar buffer is below in a smaller window sized to fit.
>
> 3. M-: (pop-to-buffer (get-buffer "*Messages*"))
> ==> Now the *Messages* buffer is above and the Calendar buffer is
> still below, but the windows are evenly split, i.e. the Calendar
> window is no longer sized to fit but is too big. Prior to the
> reimplementation of display-buffer doing this step did not change the
> height of the Calendar window.
>
> The behavior in step 3 results from the invocation of
> window--even-window-heights in the last clause of the cond in
> display-buffer, which happens because the *Messages* buffer exits but is
> not displayed. If the sexp in step 3 contained *scratch* instead of
> *Messages*, the height of the Calendar window would not have changed.
Thanks for noticing this.
> Looking at the pre-reimplementation source of Fdisplay_buffer, it looks
> like the window heights should get evened out just as in the lisp
> reimplementation; nevertheless, this is not what happens in the above
> recipe with the older code.
It's because in the Elisp code I evened window heights whenever they
were not equal. The original code evened heights only when the height
of the window to display BUFFER-OR-NAME was less than that of the
selected window. I've tried to restore the original behavior. Please
try again.
I'd like to make the window code resilient in a way that applications
like calendar can naturally set `window-size-fixed'. As a consequence,
`display-buffer' wouldn't change the calendar window's size even it were
larger than the new window. Setting `window-size-fixed' can currently
result in unexpected behavior. Fixing this is non-trivial.
Also I'd like to give `split-height-threshold' and `window-min-height'
buffer-local semantics and maybe add a `window-max-height' variable so
to do `fit-window-to-buffer' and `shrink-window-if-larger-than-buffer'
implicitly during each window configuration change. `window-min-height'
equalling `window-max-height' for a particular buffer would then imply
`window-size-fixed' for that buffer.
Eventually, a user should be able to change window configurations
arbitrarily with the calendar window always keeping its original size
(unless there's no other way, obviously).
martin
This bug report was last modified 16 years and 363 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.