Subject: Re: bug#44611: Prefix arg for xref-goto-xref

From: Eli Zaretskii <[email-masked]>
Date: Fri, 25 Dec 2020 13:44:39 +0200

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Fri, 25 Dec 2020 11:20:19 +0200
> 
> >> With further development of the search commands based on xref, more
> >> users perceive it as a grep replacement, that however is not based
> >> on grep mode, so this is a good reason to make xref keybindings more
> >> compatible with grep mode.
> >
> > You didn't answer my question why not use the format we use in *grep*
> > buffers or *occur* buffers.
> 
> Sorry, I don't know an answer to this question.  But fortunately
> Dmitry answered your question.

He did, yes.

> Big corporations don't afraid making much more fundamental changes
> that affect billions of users.  For example, on smartphone OS
> they can do such a change that on the Task list the same gesture
> will remove the wrong task than on older versions.  Also major sites
> with billions of users often change their UI completely without hesitation.
> 
> So I don't understand such extreme precautions.

Do you think that what "big corporations" do is okay?  If you do, then
I understand why you consider it OK for us to do something similar.
But if you don't, then why do you suggest that we follow bad examples?

I don't think frequent changes in the UI and the defaults are a Good
Thing.  Each time I upgrade some software which comes from those big
corporations, I have to waste some significant time to get many of my
previous defaults back, disable or reconfigure annoying new features
etc.  Moreover, no matter how conservative we are in Emacs with
breaking backward compatibility, we are still being occasionally
accused of not being conservative enough.  So evidently, veteran users
don't like such changes to happen too frequently.  Looking at NEWS for
past releases, I conclude that we indeed didn't make such changes.

> Unlike the above examples,
> in Emacs everything is configurable, so you can easily add to the init file:
> 
>   (define-key xref--xref-buffer-mode-map (kbd "TAB") #'xref-quit-and-goto-xref)

This works both ways: if you want TAB to do something other than its
default, you can rebind it for you, right?

> But having no command bound to TAB is a lose-lose situation because
> users of grep-like xref commands will have less compatible keys.

I didn't suggest unbinding TAB, I suggested to leave its current
binding as it was in Emacs 27 and older.

> > And why C-j?  That's LFD, a key more suitable for acting on something
> > at point, not quitting the buffer.
> 
> The initial xref UI was closer to completion UI, so C-j makes it consistent
> with icomplete mode for users who still perceive xref as completion UI.

That contradicts what Dmitry said: that the current Xref UI moves away
of the completion UI, and towards compilation-mode and grep-mode.
There, deleting the window with C-j will look odd, I think.

> > Why not 'q' (for "quit") or 'b' (for "bury")?
> 
> 'xref-quit-and-goto-xref' also jumps to xref, not only quits,
> but 'q' and 'b' should only quit.

That's not a catastrophe, but if you want, we could use "C-c C-c"
instead, as that is used in some other modes for similar effect.