Subject: bug#71245: 2024-03-17; Populate `semantic-symref-filepattern-alist'

From: David Fussner <[email-masked]>
Date: Wed, 29 May 2024 10:13:52 +0100

Hi Keita,

Thanks for your reply, and I agree with you that it's sort of a choice
between two suboptimal outcomes. I'm not by any means the judge of
what xref should and shouldn't do, that would be Dmitry and the Emacs
maintainers, and it's certainly the case that `xref-find-references'
in general will only search for project files in a particular
language, ignoring all others. The way TeX has evolved means that
there could be some false positives if we search all .tex files in a
project, no matter the major mode of the buffer where we start the
search. My argument in favor of doing this is threefold:

1. How false are these false positives? If it's a project with plain
TeX and LaTeX files, there's always a certain amount of overlap
anyway, and that includes amsTeX, too. ConTeXt is another problem, so
it will depend somewhat on the nature of the project.

2. If you create a TAGS file in the project, then typically that will
cover all the .tex files, too, so the other xref commands may find
hits across the various TeX varieties, and therefore
`xref-find-references' won't be an outlier in that respect.

3. I also feel -- quite strongly as it happens -- that false negatives
are worse than false positives. If you've a .tex file open and do M-?
in it then you won't even see the hit point is on, but only hits from
whatever other file extensions happen to belong to the initial file's
major mode. Currently, in the case of plain TeX or ams TeX, that means
no hits, which is sort of weird and very frustrating when you're
looking at one on your screen. In a LaTeX .tex file you'll also not
get the hit you're actually looking at on your screen, but this might
be disguised by hits from other file extensions. I think this is much
more misleading than any false positives, but I concede that others
may not feel as strongly about this as I do.

I should probably add that, if Emacs does decide to accept the new
xref backend for tex-mode.el, then as it stands it will add the
current buffer's file extension to `semantic-symref-filepattern-alist'
automatically for the rest of the Emacs session, if it isn't already
there. This probably isn't very neighborly of me, so I guess depending
on what you decide about this request I may have to reconsider what
happens automatically in tex-mode.el. What do you think?

Best, David.

On Wed, 29 May 2024 at 07:22, Ikumi Keita <[email-masked]> wrote:
>
> Hi David,
>
> >>>>> David Fussner via bug-auctex via Bug reporting list for AUCTeX <[email-masked]> writes:
> > The patchset for the new xref backend in tex-mode.el is still pending,
> > but no matter what the eventual outcome of that I think we still need to
> > have a complete set of AUCTeX modes included in
> > `semantic-symref-filepattern-alist'. Without them we just get the
> > cryptic message about customizing that variable when we try to use
> > `xref-find-references'. Also, I don't know whether it was decided not to
> > include the .tex extension where relevant, but this does mean that,
> > without further intervention, `xref-find-references' won't search .tex
> > files in any of the modes, even when you are actually searching from,
> > say, a LaTeX-mode .tex file. This seems suboptimal to me. I attach a
> > patch for your consideration.
>
> Thanks for your proposal. Actually, I'm not sure what to do with this
> issue.
>
> As you say, .tex extension is shared among LaTeX, plain TeX and ConTeXt.
> (I think we can ignore SliTeX and AmSTeX.) When AUCTeX adds .tex to
> `semantic-symref-filepattern-alist', `xref-find-references' searches all
> .tex files, if I understand correctly. Therefore, if LaTeX files and
> plain TeX files are in the same directory, M-? typed in the LaTeX file
> buffers would look into plain TeX files as well. In theory, this can
> lead to false positive result. Is this legitimate behavior for xref.el?
> If it is for sure, I think AUCTeX can accept your patch.
> (Or, maybe AUCTeX should have a new customize option to control to have
> .tex extension in `semantic-symref-filepattern-alist' so that users
> can decide to allow such false positives or not?)
>
> Regards,
> Ikumi Keita
> #StandWithUkraine #StopWarInUkraine
> #Gaza #StopMassiveKilling #CeasefireNOW