mallgrab / ctags

A maintained ctags implementation

Home Page:https://ctags.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Universal Ctags

Build Status Coverity Scan Build Status Coverage Status Build status RTD build status CircleCI Build Status GitHub Actions/VALGRIND

Universal Ctags generates an index (or tag) file of language objects found in source files for many popular programming languages. This index makes it easy for text editors and other tools to locate the indexed items. Universal Ctags improves on traditional ctags because of its multilanguage support, its ability for the user to define new languages searched by regular expressions, and its ability to generate emacs-style TAGS files.

universal-ctags has the objective of continuing the development from what existed in the Sourceforge area. Github exuberant-ctags repository was started by Reza Jelveh and was later moved to the universal-ctags organization.

The goal of the project is preparing and maintaining common/unified working space where people interested in making ctags better can work together.

The latest build and package

If you want to try the latest universal-ctags without building it yourself...

Windows

Daily builds are available at the ctags-win32 project. Go to the releases page to download zip packages.

Mac

See Homebrew Tap for Universal Ctags

Snap

Go to ctags-snap and clone the ctags-snap repo. Then, follow instructions to build the snap package of ctags. Snapcraft will automatically fetch the source code from GitHub.

How to build and install

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

See docs/autotools.rst for more information.

To build on Windows, see docs/windows.rst for more information.

To build on OSX, see docs/osx.rst for more information.

Manual

Go to https://docs.ctags.io for the preformatted documentations of the latest development version. See also */README.md on this repository.

Differences from exuberant-ctags

You may be interested in how universal-ctags is different from exuberant-ctags. See Introduced changes on https://docs.ctags.io/ for details.

The most significant incompatible changes:

  • Universal-ctags doesn't load ~/.ctags and ./.ctags at starting up time. Instead, it loads ~/.ctags.d/*.ctags and ./.ctags.d/*.ctags. See the above web site and man pages (man/ctags.1.rst.in and man/ctags-incompatibilities.7.in in the source tree).

  • Universal-ctags is more strict about characters that can be used in kind letters and kind names than Exuberant-ctags.

    • The letter must be an alphabetical character ([a-zA-EG-Z]). F is reserved for file kind.

    • The first character of the name must be alphabetic, and the rest characters must be alphanumeric ([a-zA-Z][a-zA-Z0-9]*).

    See the web site and man pages. The detailed background is explained in #1737.

    If you want to reuse your .ctags written for Exuberant-ctags, you must review kind letters and names defined with --regex-<LANG>=... options. When updating the definitions, using --kinddef-<LANG>=... option is appreciated.

Pull-requests are welcome!

About

A maintained ctags implementation

https://ctags.io

License:GNU General Public License v2.0


Languages

Language:C 66.2%Language:Emacs Lisp 6.6%Language:Shell 4.0%Language:VHDL 3.8%Language:TeX 2.7%Language:HTML 1.8%Language:Vim Script 1.4%Language:C++ 1.2%Language:Python 1.2%Language:SystemVerilog 1.1%Language:JavaScript 0.8%Language:Fortran 0.8%Language:Raku 0.7%Language:COBOL 0.7%Language:Makefile 0.6%Language:M4 0.6%Language:Perl 0.5%Language:C# 0.5%Language:PHP 0.4%Language:TypeScript 0.4%Language:Assembly 0.4%Language:NSIS 0.3%Language:Objective-C 0.3%Language:Puppet 0.2%Language:Ada 0.2%Language:Yacc 0.2%Language:Verilog 0.2%Language:Julia 0.2%Language:Batchfile 0.2%Language:MATLAB 0.2%Language:Ruby 0.1%Language:Go 0.1%Language:XSLT 0.1%Language:R 0.1%Language:Erlang 0.1%Language:CMake 0.1%Language:Tcl 0.1%Language:Eiffel 0.1%Language:Fancy 0.1%Language:Elixir 0.1%Language:Java 0.1%Language:ActionScript 0.1%Language:Rust 0.1%Language:Haxe 0.1%Language:RobotFramework 0.1%Language:PowerShell 0.0%Language:CSS 0.0%Language:Standard ML 0.0%Language:SCSS 0.0%Language:D 0.0%Language:Clojure 0.0%Language:Haskell 0.0%Language:OCaml 0.0%Language:Scheme 0.0%Language:Awk 0.0%Language:Lua 0.0%Language:Kotlin 0.0%Language:Pascal 0.0%Language:AutoIt 0.0%Language:Roff 0.0%Language:PLpgSQL 0.0%Language:Classic ASP 0.0%Language:GDB 0.0%Language:Zephir 0.0%Language:Common Lisp 0.0%Language:Elm 0.0%Language:Cuda 0.0%Language:CoffeeScript 0.0%Language:Objective-C++ 0.0%Language:VBA 0.0%Language:BlitzBasic 0.0%Language:PureBasic 0.0%Language:Coq 0.0%Language:Logos 0.0%Language:TSQL 0.0%Language:Rebol 0.0%Language:Forth 0.0%Language:Hack 0.0%Language:Smalltalk 0.0%Language:E 0.0%