Universal Ctags Hacking Guide¶
|Authors:||Universal Ctags developers|
Universal Ctags (abbreviated as u-ctags) is a maintained implementation of
ctags generates an index (or tag) file of language objects found in source
files for programming languages.
This index makes it easy for text editors and other tools to locate the indexed
Exuberant Ctags (e-ctags) maintained by Darren Hiebert, the ancestor of Universal Ctags, improved traditional ctags with multi-language support, the ability for the user to define new languages searched by regular expressions (called optlib in Universal Ctags), and the ability to generate emacs-style TAGS files. But the activity of the project unfortunately stalled.
Universal Ctags has the objective of continuing the development of Exuberant Ctags. Reza Jelveh <firstname.lastname@example.org> initially created a personal fork of Exuberant Ctags on GitHub. As interest and participation grew, it was decided to move development to a dedicated project as Universal Ctags. The goal of this project is to maintain a common/unified working space where people interested in making ctags better can work together.
Some of major features of Universal Ctags are;
- more numbers of improved language support
- new extended C/C++ language parser, etc.
- fully extended optlib (a feature to define a new language parser from a command line)
- interactive mode (experimental)
This guide, which also includes the man pages, is primarily for developers and provides additional information to the man pages, including experimental features.
This is a draft document. Proofreading and pull-requests are welcome!
- Building ctags
- Man pages
- Option files
- Extending ctags with Regex parser (optlib)
- Regular expression (regex) engine
- Regex option argument flags
- Scope tracking in a regex parser
- Overriding the letter for file kind
- Generating fully qualified tags automatically from scope information
- Multi-line pattern match
- Advanced pattern matching with multiple regex tables
- Conditional tagging with extras
- Adding custom fields to the tag output
- Capturing reference tags
- Running a guest parser with _guest regex flag
- Defining a subparser
- Translating an option file into C source code (optlib2c)
- Output formats
- Interactive mode
- Other changes
- Extending ctags with a parser written in C
- Testing ctags
- Testing a parser
- Request for extending a parser (or Reporting a bug of parser)
- Relationship between other projects
- Who we are