xref: /Universal-ctags/docs/other-projects.rst (revision ce46762400e71b6038101de8debee2f934a5f519)
1======================================================================
2Relationship between other projects
3======================================================================
4
5.. contents:: `Table of contents`
6	:depth: 3
7	:local:
8
9Other tagging engines
10----------------------------------------------------------------------
11
12`Exuberant Ctags <http://ctags.sourceforge.net/>`_
13~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14
15The origin of Universal Ctags.
16
17`Geany <https://github.com/geany/geany>`_
18~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19Geany is a small and lightweight IDE.
20Geany maintains their own tagging engine derived from ctags.
21We are looking for the way to merge or share the source code each
22other.
23
24Repo
25
26	https://github.com/geany/geany/tree/master/ctags
27
28Geany has created a library out of ctags
29
30  	https://github.com/universal-ctags/ctags/issues/63
31
32Their language parsers have many improvements to various parsers.
33Changes known by devs worth backporting:
34
35* Various fixes for D parser (c.c), but currently the code diverges
36  from ours to some extent.
37
38
39They have these additional language parsers:
40
41* `DocBook <https://en.wikipedia.org/wiki/DocBook>`_
42* `Vala (c.c) <https://en.wikipedia.org/wiki/Vala_%28programming_language%29>`_
43
44Software using ctags
45----------------------------------------------------------------------
46
47`Pygments <https://pygments.org/>`_
48~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49
50	.. TODO: Is Pygments using ctags? To be move moved to other section?
51
52	Pygments is a generic syntax highlighter.
53
54	It can utilize tags file
55	as input for making hyperlinks. However, Pygments just looks
56	at names and lines in tags file. scopes and kinds are not
57	used.  See `here
58	<https://pygments-doc.readthedocs.io/en/latest/formatters/html.html>`_ for
59	details.
60
61	As far as I (Masatake YAMATO) tried, using Pygments from ctags
62	is not so useful. There are critical gap between ctags and Pygments.
63	ctags focuses on identifiers. Pygments focuses on keywords.
64
65`GNU global <https://www.gnu.org/software/global/>`_
66~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67
68 	GNU global is a source code tagging system.
69
70	I (Masatake YAMATO) don't inspect this much but GNU global uses
71	ctags internally.
72
73	A person at GNU global project proposed an extension for the tags file
74	format: See `this ticket
75	<https://sourceforge.net/p/ctags/mailman/message/30020186/>`_ for details.
76
77	See also `'Source code reading' related sites
78	<https://www.gnu.org/software/global/links.html>`_.
79
80`GNU Source-highlight <https://www.gnu.org/software/src-highlite/>`_
81~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
82
83	GNU Source-highlight produces a document with syntax highlighting.
84
85	It can utilize tags file
86	as input for making hyperlinks.
87	See `Generating References
88	<https://www.gnu.org/software/src-highlite/source-highlight.html#Generating-References>`_
89	section for details.
90
91	I (Masatake YAMATO) have not tried the feature yet.
92
93`OpenGrok <https://oracle.github.io/opengrok/>`_
94~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95
96	OpenGrok is a fast and usable source
97	code search and cross reference engine.
98
99	I (Masatake YAMATO) don't inspect this much but OpenGrok uses
100	ctags internally.
101
102Linux kernel
103~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104
105	See `linux/scripts/tags.sh <https://elixir.bootlin.com/linux/v5.10.2/source/scripts/tags.sh>`_
106	of Linux kernel source tree.
107	It utilizes c parser to the utmost limit.
108
109Other interesting ctags repositories
110----------------------------------------------------------------------
111There are several interesting repo's with ctags around. These are
112interesting to integrate in the future.
113
114`VIM-Japan <https://github.com/vim-jp/ctags/>`_
115~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116
117VIM-Japan have some interesting things, especially regarding encoding.
118
119`Anjuta <https://gitlab.gnome.org/GNOME/anjuta>`_
120~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
121
122Anjuta DevStudio is a versatile Integrated Development Environment (IDE)
123on GNOME Desktop Environment and features a number of advanced
124programming facilities.
125
126They did not fork Exuberant Ctags, but they did
127natively `include it in Anjuta <https://git.gnome.org/browse/anjuta/tree/plugins/symbol-db/anjuta-tags>`_.
128They have made several additions to
129their version of it including fairly extensive Vala language support.
130
131`Tagbar <https://github.com/majutsushi/tagbar/>`_
132~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
133
134Tagbar is a Vim plugin that provides an easy way to browse the tags of the
135current file and get an overview of its structure.
136
137This is `a gold mine of optlibs <https://github.com/majutsushi/tagbar/wiki>`_.
138
139.. include:: tracking.rst
140