Subject: Re: bug#71466: 30.0.50; Buffer-menu-group-by non-nil resets point when Buffer List is reverted

From: Eshel Yaron <[email-masked]>
Date: Tue, 18 Jun 2024 18:55:46 +0200

Eli Zaretskii <[email-masked]> writes:

>> From: Eshel Yaron <[email-masked]>
>> Cc: [email-masked],  [email-masked],  [email-masked]
>> Date: Tue, 18 Jun 2024 16:01:40 +0200
>> 
>> Eli Zaretskii <[email-masked]> writes:
>> 
>> >>  @item g
>> >> -@findex xref-revert-buffer
>> >> -Refresh the contents of the @file{*xref*} buffer
>> >> -(@code{xref-revert-buffer}).
>> >> +Refresh the contents of the @file{*xref*} buffer (@code{revert-buffer}).
>> >> +@xref{Reverting}.
>> >
>> > Why remove the index entry?  It needs to be rewritten, not removed.
>> 
>> The index entry is for xref-revert-buffer, which we're making obsolete
>> here in favor of revert-buffer, which has its own index entry elsewhere.
>> How do you suggest rewriting it instead?
>
> Like this:
>
>   @cindex revert-buffer, in @file{*xref*} buffers
>
> And please move it before "@item g", so that following the index entry
> with 'i' in Info lands on the line showing `g', not the line after it.

OK, thanks.

>> >> -(defun xref-revert-buffer ()
>> >> +(defun xref--revert-buffer (&rest _)     ; Ignore `revert-buffer' args.
>> >>    "Refresh the search results in the current buffer."
>> >
>> > And I wonder why you preferred a backward-incompatible change to a
>> > backward-compatible one:
>> 
>> This is intended to be (basically) fully backward-compatible:
>> xref-revert-buffer becomes an alias of revert-buffer, which does exactly
>> what xref-revert-buffer would do.
>
> Yes, but why not leave xref-revert-buffer alone, under its original
> name?

See below.

>> > leave the function's name alone, and just set up
>> > revert-buffer-function to invoke it.  Was this not possible for some
>> > technical reason that evades me?
>> 
>> It's possible, and it's more or less what I suggested upthread, but
>> Dmitry correctly noted that this approach (using xref--revert-buffer)
>> improves backward-compatibility in the following sense: users that
>> currently invoke xref-revert-buffer not by pressing 'g', but in some
>> other way, can continue to do so and get the same behavior that now
>> revert-buffer provides when you press 'g'.  Since revert-buffer does
>> more than just calling revert-buffer-function (namely, it also runs
>> revert-buffer-restore-functions), making xref-revert-buffer an alias of
>> revert-buffer ensures invoking and xref-revert-buffer and pressing 'g'
>> continues to behave the same.
>
> But the original xref-revert-buffer didn't do all those other things,
> did it?  So invoking it directly will be more similar to what that did
> before.

That's right, but revert-buffer-restore-functions makes revert-buffer
more correct because it also restores outline-minor-mode state.  So
making xref-revert-buffer an alias of revert-buffer brings this benefit
to users that invoke xref-revert-buffer directly, without duplicating
any revert-buffer code in xref-revert-buffer.  Anyway, I trust you and
Dmitry to decide on the preferred solution, let me know I'll and post a
final patch accordingly.

Eshel