TAGS proposal



Leo Butler <l.butler at ed.ac.uk> wrote:

   More importantly, the TAGS file needs to be used in conjunction with
   some other tool to make it useful. Emacs has good support for it, so
   that is one tool.

I fear much well-intended reaction about TAGS files will come from
people who never use them.

First, a TAGS file (e.g. using EMACS) is usful for instantaneously
finding a definition in a huge system of source.  Takes one key chord
once the cursor is over a symbol.

Less well known is that a TAGS file in Emacs will very efficiently find
and visit all appearances of a regexp or string.  (Performance is near
grep speed.)  A developer typically uses this to see all the places that
call a particular function.  (See M-x tags-search.)  This is essential
when refactoring or trying to understand some tangled collection of
obscure functions scattered across multiple files.

Elsewhere Stavros questioned which files should be included in _the_
TAGS file.  There is no reason to restrict to a single TAGS file.  Emacs
supprts multiple simultaneous TAGS file, but I've found it simpler just
to create multiple overlapping TAGS files and select the one I need for
a particular task.  For Maxima these might be TAGS (everything),
TAGS.kernel, etc.

All this works in various Emacs, but is independent of the CL
implementation which is being used.  There are other cross-reference
tools in various CL implementations that provide similar functionality,
but they are all different.  TAGS works pretty much the same in any
Emacs.

Unfortunately, I don't know of a lot of things that support TAGS file
other than Emacs, but that doesn't mean they should not be available.
They are quite lightweight and can be regenerated (e.g. by "make TAGS")
so they don't need to be distributed, so why not support them and make
them easily available to developers and users that can benefit from
them?