A maintained ctags implementation
Universal Ctags (abbreviated as u-ctags) is a maintained implementation of
ctagsgenerates 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 items.
Exuberant Ctags (e-ctags) maintained by Darren Hiebert, the ancestor of Universal Ctags, improved traditional
ctagswith 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 [email protected] 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;
If you want to try the latest Universal Ctags without building it yourself...
Go to ctags-snap and clone the
ctags-snaprepo. Then, follow instructions to build the snap package of Universal Ctags. Snapcraft will automatically fetch the source code from GitHub.
To build with Autotools (Autoconf, Automake, and Libtool) on GNU/Linux, OSX, or Windows 10 WSL,
$ git clone https://github.com/universal-ctags/ctags.git $ cd ctags $ ./autogen.sh $ ./configure --prefix=/where/you/want # defaults to /usr/local $ make $ make install # may require extra privileges depending on where to install
Universal Ctags Hacking Guide, which also includes the man pages, is primarily for developers and provides additional information to the man pages, including experimental features.
*/README.mdon this repository.
The most significant incompatible changes:
Universal Ctags doesn't load
./.ctagsat starting up time. Instead, it loads
Universal Ctags is more strict about characters that can be used in kind letters and kind names than Exuberant-ctags.
Fis reserved for
The detailed background is explained in #1737.
If you want to reuse your
.ctagswritten for Exuberant-ctags, you must review kind letters and names defined with
--regex-=...options. When updating the definitions, using
--kinddef-=...option is appreciated.
Pull-requests are welcome!