Exuberant Ctags: Why?

# What makes this implementation of ctags desirable?

1. Supports many programming languages.

2. It is capable of generating tags for all types of C/C++ language tags, including all of the following:

3. class names
4. macro definitions
5. enumeration names
6. enumerators
7. function definitions
8. function prototypes/declarations
9. class, interface, struct, and union data members
10. structure names
11. typedefs
12. union names
13. variables (definitions and external declarations)

14. It is far less easily fooled by C 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.

15. Supports user-defined languages, using regular expressions.

16. Supports output of Emacs-style TAGS files.

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

18. Compiles on UNIX, MSDOS, Windows 95/98/NT, OS/2, QNX, Amiga, QDOS, VMS, Macintosh, and Cray.

Back to Exuberant Ctags