On Sat, Nov 7, 2020 at 10:52 AM Eli Zaretskii wrote: > > From: Pierre Rouleau > > 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