bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#44494: etags.el xref-location-marker does not handle TAGS references


From: Pierre Rouleau
Subject: bug#44494: etags.el xref-location-marker does not handle TAGS references to .el.gz files
Date: Sat, 7 Nov 2020 11:09:49 -0500


On Sat, Nov 7, 2020 at 10:52 AM Eli Zaretskii <eliz@gnu.org> wrote:
> From: Pierre Rouleau <prouleau001@gmail.com>
> Date: Sat, 7 Nov 2020 10:39:41 -0500
> Cc: dgutov@yandex.ru, 44494@debbugs.gnu.org
>
> One difference is that when using find-tag is using code from etags.el exclusively:
> - find-tag-noselect
> . - find-tag-in-order   , which tries different predicates and the one that succeeds is
> tag-implicit-name-match-p
> .  - it identifies the cc-bytecomp.el.gz
> .- calls etags-goto-tag-location

The Xref etags backend also uses tag-implicit-name-match-p:

  (defvar etags-xref-find-definitions-tag-order '(tag-exact-match-p
                                                  tag-implicit-name-match-p)
    "Tag order used in `xref-backend-definitions' to look for definitions.

  If you want `xref-find-definitions' to find the tagged files by their
  file name, add `tag-partial-file-name-match-p' to the list value.")

> When using xref-find-definition the xref backend is used.  It's not the same code. 
> The xref backend code for elisp does not find it.  The backend code for etags does not find it either.
> It tries to open cc-bytecomp.el as its the file name it gets from the TAGS file.
> It detects the file not being present and reports it as missing, assuming the file have been removed.
>
> To me the 2 sets of code look very different.

They share some of the code, at least when xref-etags-mode is used.
So it sounds like some information found by tag-implicit-name-match-p
doesn't get handed back to Xref?

For the Xref's own ELisp backend, we will probably need to code
something in xref.el.

Sorry, I meant that find-tag-in-order is able to find the reference in the TAGS file when
it tries the tag-implicit-name-match-p predicate.  find-tag-in-order returns a marker that identifies the .el.gz file.

I agree that for the ELisp backend something probably needs to be done to support it. 
But I also think that something must also be done for the etags xref backend.
--
/Pierre

reply via email to

[Prev in Thread] Current Thread [Next in Thread]