Subject: Re: bug#44070: 28.0.50; Minibuffer display "jumps" upon minor edit

From: Stefan Monnier <[email-masked]>
Date: Sun, 01 Nov 2020 14:54:11 -0500

>> >> Also, I'm not sure that's what we want to do: as I argued in my previous
>> >> message, this change is mostly meant to better fit the behavior of
>> >> resize_mini_window, and that behavior applies to all mini-windows,
>> >> regardless if they're used for a minibuffer or something else.
>> > My line of thinking was that, while in minibuffers we usually want to
>> > see the end of the text, that is not necessarily true in echo-area
>> > messages.
>> Yet, that's what `resize_mini_window` does for all mini-windows
>> regardless of it's an echo-area or not.
> Resizing is one thing; which part of partially displayed text to show
> is another.  They aren't the same decisions.

Right, but `resize_mini_window` does do both: it resizes the window and
and sets the window-start according to its rules of which part should
be displayed.  My patch tries to make the non-resizing scrolls
follow the same logic as that of `resize_mini_window` to
avoid inconsistencies.

>> Also, my patch shouldn't affect whether we "see the end of the text", so
>> maybe I just don't understand what you're referring to.
> Where do you think point is in an echo-area buffer?

I must say that I don't know, but I expect it should be either at BOB or
at EOB: if it's a BOB then my patch won't make any difference because
`window-start` will be set to BOB regardless of the scroll being
conservative or not; if it's at EOB my patch will maximize the amount of
text actually displayed, which is also what `resize_mini_window` does,
but I suspect that for each-areas this won't make any difference because
I've never seen an echo-area messages "scrolled" such that there's white
space left below its end (probably because `resize_mini_window` already
did the job, so there's no scrolling involved).

>> I thought the test of `scroll_minibuffer_conservative` played this role.
> That's exactly why we need a FIXME: the variable says "minibuffer",
> but the code checks for mini-window.

I chose the word "minibuffer" because it seems those "mini windows" are
usually referred to as "minibuffer windows" in places like
`window-minibuffer-p`.  The docstring similarly uses "minibuffer
windows" to refer to those *windows* rather than to their specific use
for minibuffers as opposed to echo area messages, although I strongly
suspect that the variable has indeed no concrete effect in echo-areas.

        Stefan