Subject: bug#70386: 30.0.50; (recenter 0 t) does not put point on top of the window

From: Eli Zaretskii <[email-masked]>
Date: Sat, 11 May 2024 21:53:31 +0300

> From: Ihor Radchenko <[email-masked]>
> Cc: [email-masked], [email-masked]
> Date: Sat, 11 May 2024 18:42:10 +0000
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > The result can legitimately depend on what is inside progn, because
> > what's there could affect point, and that in turn affects which line
> > recenter puts on the first window line, or even if it can do that.
> 
> In my specific reproducer the point is not moved, AFAIK.

Of course it can move: as the window is scrolled by
pixel-scroll-precision-interpolate, point can become invisible.  If
redisplay kicks in, it will move point to bring it back into the
viewport.

> > So in this general form, the expectation is not correct.  Perhaps if
> > you made it less general and more specific to what the code inside
> > progn actually does, we could discuss this in a more useful manner.
> 
> The code inside progn (1) invokes approximate smooth scrolling (2)
> forces the scrolling to move to the final location accurately.
> 
> The reproducer is adopted from my custom function that makes recentering
> use smooth scrolling. The code started to act unpredictably from time to
> time with point ending outside window boundaries after one of recent-ish
> pulls from master.

That the behavior changed recently doesn't yet mean the previous
behavior was correct and the new one is wrong.  It might mean your
code is based on incorrect assumptions, and just happened to work
previously by sheer luck.