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

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

Re: I have a dream... about tags


From: Scott Frazer
Subject: Re: I have a dream... about tags
Date: Tue, 04 Sep 2007 09:39:50 -0400
User-agent: Thunderbird 2.0.0.6 (Windows/20070728)

Nordlöw wrote:
I have a dream...

I have been using gtags (GNU GLOBAL) for some time now. The problem
with gtags is that is does not handle C++ namespaces, that is you
can't lookup ClassName::member just by entering this language
construct from the minibuffer.

[snip]

etags can however lookup such ClassName::member C++ constructs, which
is great. But, for what I have seen, etags has other deficiencies. It
doesn't handle lookups of symbols that have multiple definitions
(occur multiple times and/or in different files/functions).

Sure it does.  Besides tags-loop-continue, see:

http://www.emacswiki.org/cgi-bin/wiki/EtagsSelect

Nor does it index static variables.

Try using this, it's much more thorough:

http://ctags.sourceforge.net/

I also haven't found a way to lookup all
uses (calls) of a structure, variable or function, which gtags can do.

I find recursive grep good enough for that.

Has anyone else also found these problems annoying, and perhaps found
some solutions to them? Are there alternatives to etags or gtags that
solves these problems?

Personally, what I really think Emacs needs is a unified way to reach
*all* parts of your content in your project, regardless of whether
they occur multiple times, are static in C, private in C++, etc. Al
this should be reachable from a single interaction in the minibuffer,
of course with completion. These are the main categories of patterns
that I thinks should be possible to enter in my unified version of
find-tag that I am day-dreaming about:

C_Struct::struct_member_x
C_Union::union_member_x
C_Enum::enum_member_x

Cpp_class::member_function()

<some-file.h>::function_declaration()
<some-file.h>::inline_function_definition()
<some-file.c>::function_definition()
<some-file.c>::function_definition()::local_variable
<first-file.c>::commonly_named_global_variable
<second-file.c>::commonly_named_global_variable

As you can see the scope operator :: is thereby also used to reach
file- and/or function- local content.

I have a dream...

Try the above suggestions, maybe you can get close enough :)

Scott


reply via email to

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