Subject: bug#32839: 27.0.50; recenter doesn't redisplay

From: Eli Zaretskii <[email-masked]>
Date: Tue, 25 Sep 2018 23:08:04 +0300

> From: Juri Linkov <[email-masked]>
> Date: Tue, 25 Sep 2018 22:11:59 +0300
> 
> 1. Eval:
> 
> (setq recenter-redisplay t)
> 
> (add-to-list 'window-scroll-functions
>              (lambda (window display-start)
>                (message "window-scroll-functions %S %S %S"
>                         window (window-buffer window) display-start)))
> 
> 2. Open *Messages* in adjacent window with 'C-h e'
> 
> 3. Put point in *scratch* preferably not on the first line
> 
> 4. Type 'C-l' (recenter-top-bottom) with different arguments, e.g.
>    C-0 C-l
>    C-1 C-l
>    C-2 C-l
>    etc.
> 
> The *Messages* buffer is not refreshed to show new logged messages
> from the calls of the window-scroll-functions.
> 
> This means that C-l (recenter-top-bottom) doesn't redisplay the frame -
> which is strange since it calls 'recenter' with non-nil arg REDISPLAY.

'recenter' doesn't redisplay the frame, it only redisplays the window
which you recenter.

> 5. Typein *scratch* again: C-l C-l C-l
>    only when C-l puts point to the center of the window,
>    the *Messages* buffer gets redisplayed (but then for some reason
>    window-scroll-functions is not called in this case).

That's a feature: you set recenter-redisplay to t, which causes a
complete redraw of the frame when you type C-l.  And
window-scroll-functions aren't called when the window is not scrolled.

Bottom line: I'm unsure what is a bug here, if any.