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