Eli Zaretskii writes: >> From: John Shahid >> Date: Thu, 28 Jun 2018 13:27:34 +0000 >> Cc: 31325@debbugs.gnu.org >> >> >> 1. introduce a new lisp function for recentering and discourage the use >> >> of `recenter' from lisp (i.e. declaring it `interactive-only'), or >> >> 2. add a new `recenter-and-redisplay' and bound it to C-l >> >> Also, Stefan's suggestion/possible solution: >> >> 3. adding an argument to `recenter' to control the redisplay behavior >> > >> > Either of those is OK. The benefit of the 3rd is that it would likely >> > "magically fix" 99% of the existing uses (I'm thinking of adding an >> > optional argument which we could call `and-redisplay` which when non-nil >> > tells recenter to do a redisplay, so all existing Elisp calls would be >> > implicitly modified not to cause a redisplay). >> >> I ended up going with option 3. I also used `redisplay` instead of >> `and-redisplay`. I felt the `and` is redundant, not sure how strongly >> you feel about the name. > > Thanks, but please also include a NEWS entry announcing the change, > and a suitable change for the ELisp manual. > > And I have a few comments: > >> - (register Lisp_Object arg) >> + (register Lisp_Object arg, register Lisp_Object redisplay) > > I believe nowadays we remove the 'register' qualifiers whenever we > change code that uses them. > >> { >> struct window *w = XWINDOW (selected_window); >> struct buffer *buf = XBUFFER (w->contents); >> @@ -5933,8 +5934,9 @@ and redisplay normally--don't erase and redraw the frame. */) >> >> if (NILP (arg)) >> { >> - if (!NILP (Vrecenter_redisplay) >> - && (!EQ (Vrecenter_redisplay, Qtty) >> + if (!NILP (redisplay) >> + && !NILP (Vrecenter_redisplay) >> + && (!EQ (redisplay, Qtty) > ^^^^^^^^^ > This should have been Vrecenter_redisplay, right? fixed all the issues mentioned above in the attached patch and documented the change in the NEWS file and the manual. cheers,