Subject: Re: bug#46119: 28.0.50; this-error-recenter

From: Juri Linkov <[email-masked]>
Date: Sat, 30 Jan 2021 20:40:09 +0200

>> Like C-M-v/C-M-S-v and M-PgUp/M-PgDown can scroll up/down other window
>> in any mode, you can use such code to recenter other window everywhere:
>>
>>   (with-selected-window (other-window-for-scrolling) (recenter-top-bottom))
>
> Yeah, it makes sense.  The only thing is that it makes harder to find
> the right name for this command;  I think by improving the docstring
> makes more clear what is this about.

Indeed, then it has no relation to errors at all.

Like the existing command scroll-other-window-down bound to 'S-C-M-v',
a new command could be named recenter-other-window bound to 'S-C-l'.

> How does it look now?:
>
> (defun this-error-recenter (&optional arg)
>   "Recenter the current displayed error in the `next-error' buffer.
> If called not from a `next-error' buffer, then it just calls
> `recenter-top-bottom' in the other window."
>   (interactive "P")
>   (if (not (or (eq major-mode 'occur-mode) (derived-mode-p 'compilation-mode)))
>       (with-selected-window (other-window-for-scrolling) (recenter-top-bottom arg))
>     (funcall next-error-function 0 nil)
>     (recenter-top-bottom arg)
>     (pop-to-buffer next-error-last-buffer)))

But then no special case is needed for occur/compilation-mode.