[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#28403: 25.2; find-tag works, but xref-find-definitions
From: |
Eli Zaretskii |
Subject: |
bug#28403: 25.2; find-tag works, but xref-find-definitions |
Date: |
Sun, 10 Sep 2017 22:09:28 +0300 |
> Date: Sun, 10 Sep 2017 14:27 EDT
> From: Winston <wbe@psr.com>
> Cc: dgutov@yandex.ru, 28403@debbugs.gnu.org
>
> Eli kindly replied:
> > Could you please post a complete example of the code in question,
> > including the definition of the _ARGS1 macro, and any other macros and
> > typedefs that would make the example stand-alone? I think I
> > understand what has happened, but I'd like to be sure before we decide
> > what to do about it.
>
> Sure (well, it's a semi-complete example). [...]
Thanks, this confirms my suspicion: as Dmitry says, etags produces
TAGS for the _ARG# macros, and doesn't see the function names. So the
fact that find-tag finds the functions is just sheer luck: it falls
back to more or less simple text search, so it can find anything you
have in the TAGS tables.
To have xref-find-definitions work in this case, you need to help
etags a bit, see below.
> > [The new xref function] is already better in several areas:
>
> I noticed that, and I liked seeing the list of matches when there's >1,
> rather than having to do {arg} find-tag, possibly repeatedly, when the
> one find-tag finds first isn't the one I wanted. However, if the basic
> find wasn't going to work, or was going to have a lot of false positives,
> then I'd stick with find-tag, which has generally worked well (almost no
> wrong matches, but it helps that my code tries to have all function
> names in all files be unique, even when they're static, so there's
> rarely >1 match).
Again, it seems to work well in your case because you take special
precautions to avoid producing symbols that would generate false
positives. But that is a fragile solution, IMO.
> > It is even possible that, given the details I requested above, I will
> > be able to help you get your use case working with xref, so please
> > don't give up on xref, not just yet.
>
> I haven't. :)
Good, because here's how I suggest you invoke etags to solve the
problems with the _ARGS# macros:
etags --regex="/[ \t]*\([^ \t]+\)[ \t]+_ARGS/\1/" ...
(replace "..." with all the other arguments you normally give when you
invoke etags). This will tell etags to tag the symbols immediately
preceding the _ARGS# macro invocations _in_addition_ to what it
already does. Then you can use xref-find-definitions in its default
configuration, and it will find your functions.
(The --regexp switch to etags is described in the Emacs manual.)
- bug#28403: 25.2; find-tag works, but xref-find-definitions, (continued)
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Dmitry Gutov, 2017/09/11
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Eli Zaretskii, 2017/09/11
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Dmitry Gutov, 2017/09/12
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Eli Zaretskii, 2017/09/13
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Dmitry Gutov, 2017/09/14
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Eli Zaretskii, 2017/09/14
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Dmitry Gutov, 2017/09/18
- bug#28403: 25.2; find-tag works, but xref-find-definitions, Eli Zaretskii, 2017/09/18
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/10
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/10
- bug#28403: 25.2; find-tag works, but xref-find-definitions,
Eli Zaretskii <=
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/10
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/10
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/10
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/10
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/10
bug#28403: 25.2; find-tag works, but xref-find-definitions, Winston, 2017/09/11