all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Nordlöw <per.nordlow@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: I have a dream... about tags
Date: Tue, 04 Sep 2007 10:57:24 -0000	[thread overview]
Message-ID: <1188903444.115274.22100@57g2000hsv.googlegroups.com> (raw)

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. etags can however do this. It also has
a rather annoying bug that makes the indexer skip inline functions in
files containing the standard construct
#ifdef __cplusplus
extern "C" {
#endif
I have already contacted the maintainer of GNU GLOBAL about this
problem, but it seems like other todos are more imporant.

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). Nor does
it index static variables. I also haven't found a way to lookup all
uses (calls) of a structure, variable or function, which gtags can do.

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...

Thanks,
Nordlöw

             reply	other threads:[~2007-09-04 10:57 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-04 10:57 Nordlöw [this message]
2007-09-04 13:39 ` I have a dream... about tags Scott Frazer
2007-09-04 15:49 ` Tom Tromey
2007-09-04 20:17 ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1188903444.115274.22100@57g2000hsv.googlegroups.com \
    --to=per.nordlow@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.