Subject: Re: bug#72323: 31.0.50; line-move unconditionally resets vscroll to 0

From: Steven Allen <[email-masked]>
Date: Sun, 18 Aug 2024 15:17:48 -0700

Eli Zaretskii <[email-masked]> writes:

>> > I disagree.  When point moves to another screen line without moving
>> > window-start, vscroll may or may not be valid.  Whether it is depends
>> > on the details of what is on display.
>> 
>> Can you give me an example example where moving point invalidates
>> vscroll (except when point would move partially or fully off screen)?
>
> Why isn't the one example I gave enough?
>
> The code in question doesn't know whether this is or isn't the case,
> at least not in all cases and not without a lot of tedious layout
> calculations.  Whether the current line will be fully visible is only
> known after the window is redisplayed.  At which time we also check
> that we didn't enter the scroll margins and other conditions that
> require to scroll the window.  Keeping the vscroll would make all this
> much more complicated, so we play it safe.

I just wanted to confirm that the issue is specifically about the being
fully visible and not something else I'm missing. If that's the case,
I'll see if I can hack something up for my own use and, if usable, see
if it's possible to integrate into pixel-scroll-precision-mode. But
it'll have to be an advice as line-move is called all over the place.

It really sounds like you just don't want to mess with this function
which is a reasonable stance as the maintainer. But it was really hard
to tell if there was something I was fundamentally misunderstanding or
if you were just being cautious and not wanting to touch a complex piece
of machinery if it's working "well enough".