ANNOUNCE

Announcing: Exuberant Ctags
Author    : Darren Hiebert

This is to announce the availability of my new, better ctags utility. I am
quite pleased with it, and others who have used it have been enthusiastic
about the greater reliability and functionality it provides.

You can find it at any of:

	http://fly.hiwaay.net/~darren/ctags.html (Web site)
	ftp://sunsite.unc.edu/pub/Linux/devel/lang/c/ctags-1.3.tar.gz
	ftp://ftp.halcyon.com/local/gvr/ctags-1.3.tar.gz

What makes this ctags desirable?

1.  It can find *all* types of C language tags, including all of the
    following:

            macro definitions
            enumerated values (values inside enum{...})
            function and method definitions
            enum/struct/union tags
            external function prototypes (optional)
            typedefs
            variable declarations

2.  It is far less easily fooled by code containing #if preprocessor
    conditional constructs, using a conditional path selection algorithm
    to resolve complicated choices, and a fall-back algorithm when this one
    fails.

3.  Can also be used to print out a list of selected objects found in source
    files.

4.  Supports UNIX, MSDOS, WindowsNT, Windows95, OS/2 and the Amiga. In some
    cases, you may need to play with the include files, depending upon you
    compiler. Some pre-compiled binaries may become available on the web site.

I wrote this because of my disappointment with the other ctags utilities that
are available. However, it does have a couple of minor limitations (you be the
judge):

1)  Support for C++ is limited.
2)  Supports only C; not Lisp, shell scripts, or anything else you might
    think of.


README

Exuberant Ctags
===============
Author: Darren Hiebert (darren@sirsi.com, darren@hiwaay.net,
	http://fly.hiwaay.net/~darren)

This source code is released into the public domain. It is provided on an
as-is basis and no responsibility is accepted for its failure to perform
as expected. It is worth at least as much as you paid for it!

[The source code for ctags can be found in src/ctags]

This is a reimplementation of the underused ctags(1) program and is intended
to be the mother of all ctags programs 8^). I was motivated to write this
because no currently available ctags program supported generation of tags for
all possible tag candidates, and because most were easily fooled by a number
of contructs. I am quite pleased with the result. It provides the following
features:

    Able to generate tags for all of the following objects:
	- macro definitions
	- enumeration values (those inside enum{...})
	- function definitions (and some C++ methods)
	- function prototypes (optional; intended for library header files)
	- enum, struct and union tags and C++ class names
	- typedefs
	- global variables

    Supports for both K&R style and new ANSI style function definitions.

    It is very robust in parsing C code and is extremely hard to fool, even
    with conditional preprocessor contructs.

It is derived from and inspired by the ctags program by Steve Kirkendall
(kirkenda@cs.pdx.edu) that comes with the Elvis vi clone (though almost
none of the original code remains). This, too, was freely available.

Please report any problems you find. The two problems I expect to be
most likely are either a tag which you expected but is missing, or a tag
created in error (shouldn't really be a tag). Please include a sample of
code (the definition) for the object which misbehaves.
