13cd29b7fSMasatake YAMATO.. _ctags-incompatibilities(7): 23cd29b7fSMasatake YAMATO 33cd29b7fSMasatake YAMATO============================================================== 4b28d5302SMasatake YAMATOctags-incompatibilities 53cd29b7fSMasatake YAMATO============================================================== 63cd29b7fSMasatake YAMATO-------------------------------------------------------------- 7bb84f88aSHiroo HAYASHIIncompatibilities between Universal Ctags and Exuberant Ctags 83cd29b7fSMasatake YAMATO-------------------------------------------------------------- 93cd29b7fSMasatake YAMATO:Version: @VERSION@ 10dccba5efSHiroo HAYASHI:Manual group: Universal Ctags 113cd29b7fSMasatake YAMATO:Manual section: 7 123cd29b7fSMasatake YAMATO 133cd29b7fSMasatake YAMATOSYNOPSIS 143cd29b7fSMasatake YAMATO-------- 153cd29b7fSMasatake YAMATO| **@CTAGS_NAME_EXECUTABLE@** [options] [file(s)] 163cd29b7fSMasatake YAMATO| **@ETAGS_NAME_EXECUTABLE@** [options] [file(s)] 173cd29b7fSMasatake YAMATO 183cd29b7fSMasatake YAMATODESCRIPTION 193cd29b7fSMasatake YAMATO----------- 203cd29b7fSMasatake YAMATO 21ecff931fSMasatake YAMATOThis page describes major incompatible changes introduced to 22bb84f88aSHiroo HAYASHIUniversal Ctags forked from Exuberant Ctags. 233cd29b7fSMasatake YAMATO 240ca26c27SHiroo HAYASHIOption files loading at starting up time (preload files) 250ca26c27SHiroo HAYASHI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 260ca26c27SHiroo HAYASHI 27ce2f2642SHiroo HAYASHIUniversal Ctags doesn't load ``~/.ctags`` at starting up time. 280ca26c27SHiroo HAYASHIFile paths for preload files are changed. 290ca26c27SHiroo HAYASHISee "FILES" section of ctags(1). 300ca26c27SHiroo HAYASHI 31*67c37950SMasatake YAMATOEnvironment variables for arranging command lines 32*67c37950SMasatake YAMATO~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33*67c37950SMasatake YAMATO 34*67c37950SMasatake YAMATOUniversal Ctags doesn't read ``CTAGS`` and/or ``ETAGS`` environment 35*67c37950SMasatake YAMATOvariables. 36*67c37950SMasatake YAMATO 373cd29b7fSMasatake YAMATOIncompatibilities in command line interface 380ca26c27SHiroo HAYASHI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 393cd29b7fSMasatake YAMATO 40a9b96c06SHiroo HAYASHIOrdering in a command line 41a9b96c06SHiroo HAYASHI.................................................................................... 42a9b96c06SHiroo HAYASHI 43a9b96c06SHiroo HAYASHI.. NOTE: #1889 44a9b96c06SHiroo HAYASHI 45a9b96c06SHiroo HAYASHIThe command line format of Universal Ctags is "``ctags [options] 46a9b96c06SHiroo HAYASHI[source_file(s)]``" following the standard POSIX convention. 47a9b96c06SHiroo HAYASHI 48a9b96c06SHiroo HAYASHIExuberant Ctags accepts a option following a source file. 49a9b96c06SHiroo HAYASHI 50a9b96c06SHiroo HAYASHI.. code-block:: console 51a9b96c06SHiroo HAYASHI 52a9b96c06SHiroo HAYASHI $ ctags -o - foo.c --list-kinds=Sh 53a9b96c06SHiroo HAYASHI f functions 54a9b96c06SHiroo HAYASHI 55a9b96c06SHiroo HAYASHIUniversal Ctags warns and ignores the option ``--list-kinds=Sh`` as follows. 56a9b96c06SHiroo HAYASHI 57a9b96c06SHiroo HAYASHI.. code-block:: console 58a9b96c06SHiroo HAYASHI 59a9b96c06SHiroo HAYASHI $ ctags -o - foo.c --list-kinds=Sh 60a9b96c06SHiroo HAYASHI ctags: Warning: cannot open input file "--list-kinds=Sh" : No such file or directory 61a9b96c06SHiroo HAYASHI a foo.c /^void a () {}$/;" f typeref:typename:void 62a9b96c06SHiroo HAYASHI b foo.c /^void b () {}$/;" f typeref:typename:void 63a9b96c06SHiroo HAYASHI 64dd74d664SMasatake YAMATOThe order of application of patterns and extensions in ``--langmap`` 650ca26c27SHiroo HAYASHI.................................................................................... 66ecff931fSMasatake YAMATO 67ecff931fSMasatake YAMATOWhen applying mappings for a name of given source file, 68ce2f2642SHiroo HAYASHIExuberant Ctags tests file name patterns *AFTER* file extensions 69ce2f2642SHiroo HAYASHI(*e-map-order*). Universal Ctags does this differently; it tests file 70ce2f2642SHiroo HAYASHIname patterns *BEFORE* file extensions (*u-map-order*). 71ecff931fSMasatake YAMATO 72ecff931fSMasatake YAMATOThis incompatible change is introduced to deal with the following 73ecff931fSMasatake YAMATOsituation: 74ecff931fSMasatake YAMATO 75ce2f2642SHiroo HAYASHI * ``build.xml`` as a source file, 76ce2f2642SHiroo HAYASHI * The Ant parser declares it handles a file name pattern ``build.xml``, and 77ce2f2642SHiroo HAYASHI * The XML parser declares it handles a file extension ``.xml``. 78ecff931fSMasatake YAMATO 79ce2f2642SHiroo HAYASHIWhich parser should be used for parsing ``build.xml``? The assumption 80ce2f2642SHiroo HAYASHIof Universal Ctags is the user may want to use the Ant parser; the 819c11514bSMasatake YAMATOfile name pattern it declares is more specific than the file extension 82ce2f2642SHiroo HAYASHIthat the XML parser declares. However, e-map-order chooses the XML 83ecff931fSMasatake YAMATOparser. 84ecff931fSMasatake YAMATO 85dccba5efSHiroo HAYASHISo Universal Ctags uses the u-map-order even though it introduces an 86ecff931fSMasatake YAMATOincompatibility. 87ecff931fSMasatake YAMATO 88ce2f2642SHiroo HAYASHI``--list-map-extensions=<language>`` and ``--list-map-patterns=<language>`` 894cca0f8eSMasatake YAMATOoptions are helpful to verify and the file extensions and the file 90ce2f2642SHiroo HAYASHIname patterns of given *<language>*. 914cca0f8eSMasatake YAMATO 921a00d331SMasatake YAMATORemove ``--file-tags`` and ``--file-scope`` options 930ca26c27SHiroo HAYASHI.................................................................................... 94503460ccSMasatake YAMATO 95ce2f2642SHiroo HAYASHIEven in Exuberant Ctags, ``--file-tags`` is not documented in its man page. 96ce2f2642SHiroo HAYASHIInstead of specifying ``--file-tags`` or ``--file-tags=yes``, use 97ce2f2642SHiroo HAYASHI``--extras=+f`` or ``--extras=+{inputFile}``. 981a00d331SMasatake YAMATO 99ce2f2642SHiroo HAYASHIInstead of specifying ``--file-tags=no``, use 100ce2f2642SHiroo HAYASHI``--extras=-f`` or ``--extras=-{inputFile}``. 1011a00d331SMasatake YAMATO 102ce2f2642SHiroo HAYASHIUniversal Ctags introduces ``F/fileScope`` extra as the replacement for 103503460ccSMasatake YAMATO``--file-scope`` option. 104503460ccSMasatake YAMATO 105ce2f2642SHiroo HAYASHIInstead of specifying ``--file-tags`` or ``--file-tags=yes``, use 106ce2f2642SHiroo HAYASHI``--extras=+F`` or ``--extras=+{fileScope}``. 107503460ccSMasatake YAMATO 108ce2f2642SHiroo HAYASHIInstead of specifying ``--file-tags=no``, use 109ce2f2642SHiroo HAYASHI``--extras=-F`` or ``--extras=-{fileScope}``. 110503460ccSMasatake YAMATO 1110ca26c27SHiroo HAYASHIIncompatibilities in language and kind definitions 1120ca26c27SHiroo HAYASHI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113fbaf20c3SMasatake YAMATO 1140278c2a1SMasatake YAMATOLanguage name defined with ``--langdef=name`` option 1150278c2a1SMasatake YAMATO.................................................................................... 1160278c2a1SMasatake YAMATO 117bb84f88aSHiroo HAYASHIThe characters you can use are more restricted than Exuberant Ctags. 1180278c2a1SMasatake YAMATOFor more details, see the description of ``--langdef=name`` in ctags-optlib(7). 1190278c2a1SMasatake YAMATO 120de43b16dSMasatake YAMATOObsoleting ``--<LANG>-kinds`` option 121de43b16dSMasatake YAMATO.................................................................................... 122de43b16dSMasatake YAMATO 123fbaf20c3SMasatake YAMATOSome options have *<LANG>* as parameterized parts in their name like 124fbaf20c3SMasatake YAMATO``--foo-<LANG>=...`` or ``--<LANG>-foo=...``. The most of all such 125bb84f88aSHiroo HAYASHIoptions in Exuberant Ctags have the former form, ``--foo-<LANG>=...``. 126fbaf20c3SMasatake YAMATOThe exception is ``--<LANG>-kinds``. 127fbaf20c3SMasatake YAMATO 128dccba5efSHiroo HAYASHIUniversal Ctags uses the former form for all *<LANG>* parameterized 129fbaf20c3SMasatake YAMATOoption. Use ``--kinds-<LANG>`` instead of ``--<LANG>-kinds`` in 130dccba5efSHiroo HAYASHIUniversal Ctags. ``--<LANG>-kinds`` still works but it will be 131fbaf20c3SMasatake YAMATOremoved in the future. 132fbaf20c3SMasatake YAMATO 133fbaf20c3SMasatake YAMATOThe former form may be friendly to shell completion engines. 134ecff931fSMasatake YAMATO 135ce2f2642SHiroo HAYASHIDisallowing to define a kind with ``file`` as name 136de43b16dSMasatake YAMATO.................................................................................... 1370f8ba855SMasatake YAMATO 138ce2f2642SHiroo HAYASHIThe kind name ``file`` is reserved. Using it as part of kind spec in 1390f8ba855SMasatake YAMATO``--regex-<LANG>`` option is now disallowed. 1400f8ba855SMasatake YAMATO 141ce2f2642SHiroo HAYASHIDisallowing to define a kind with '``F``' as letter 142de43b16dSMasatake YAMATO.................................................................................... 143e3ff0e48SMasatake YAMATO 144ce2f2642SHiroo HAYASHIThe kind letter '``F``' is reserved. Using it as part of a kind spec in 145e3ff0e48SMasatake YAMATO``--regex-<LANG>`` option is now disallowed. 146e3ff0e48SMasatake YAMATO 147e0b5213bSMasatake YAMATODisallowing to use other than alphabetical character as kind letter 148de43b16dSMasatake YAMATO.................................................................................... 149e0b5213bSMasatake YAMATO 150bb84f88aSHiroo HAYASHIExuberant Ctags accepts a character other than alphabetical character 151dccba5efSHiroo HAYASHIas kind letter in ``--regex-<LANG>=...`` option. Universal Ctags 152e0b5213bSMasatake YAMATOaccepts only an alphabetical character. 153e0b5213bSMasatake YAMATO 154b0747823SMasatake YAMATOAcceptable characters as parts of a kind name 155de43b16dSMasatake YAMATO.................................................................................... 156b0747823SMasatake YAMATO 157bb84f88aSHiroo HAYASHIExuberant Ctags accepts any character as a part of a kind name 158b0747823SMasatake YAMATOdefined with ``--regex-<LANG>=/regex/replacement/kind-spec/``. 159b0747823SMasatake YAMATO 160dccba5efSHiroo HAYASHIUniversal Ctags accepts only an alphabetical character as 161b0747823SMasatake YAMATOthe initial letter of a kind name. 162dccba5efSHiroo HAYASHIUniversal Ctags accepts only an alphabetical character or 163b0747823SMasatake YAMATOnumerical character as the rest letters. 164b0747823SMasatake YAMATO 165b0747823SMasatake YAMATOAn example:: 166b0747823SMasatake YAMATO 167b0747823SMasatake YAMATO --regex-Foo=/abstract +class +([a-z]+)/\1/a,abstract class/i 168b0747823SMasatake YAMATO 169ce2f2642SHiroo HAYASHIUniversal Ctags rejects this because the kind name, ``abstract class``, 170b0747823SMasatake YAMATOincludes a whitespace character. 171b0747823SMasatake YAMATO 172dccba5efSHiroo HAYASHIThis requirement is for making the output of Universal Ctags follow 173b0747823SMasatake YAMATOthe tags file format. 174b0747823SMasatake YAMATO 175b7d2b174SMasatake YAMATOA combination of a kind letter and a kind name 176b7d2b174SMasatake YAMATO.................................................................................... 177b7d2b174SMasatake YAMATO 178dccba5efSHiroo HAYASHIIn Universal Ctags, the combination of 179b7d2b174SMasatake YAMATOa kind letter and a kind name must be unique in a language. 180b7d2b174SMasatake YAMATO 181b7d2b174SMasatake YAMATOYou cannot define more than one kind reusing a kind letter with 182b7d2b174SMasatake YAMATOdifferent kind names. You cannot define more than one kind reusing a 183b7d2b174SMasatake YAMATOkind name with different kind letters. 184b7d2b174SMasatake YAMATO 185b7d2b174SMasatake YAMATOAn example:: 186b7d2b174SMasatake YAMATO 187b7d2b174SMasatake YAMATO --regex-Foo=/abstract +class +([a-z]+)/\1/a,abstractClass/i 188b7d2b174SMasatake YAMATO --regex-Foo=/attribute +([a-z]+)/\1/a,attribute/i 189b7d2b174SMasatake YAMATO 190ce2f2642SHiroo HAYASHIUniversal Ctags rejects this because the kind letter, '``a``', used twice 191ce2f2642SHiroo HAYASHIfor defining a kind ``abstractClass`` and ``attribute``. 192b7d2b174SMasatake YAMATO 193b7d2b174SMasatake YAMATO 1943cd29b7fSMasatake YAMATOIncompatibilities in tags file format 1950ca26c27SHiroo HAYASHI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 196d7b51203SMasatake YAMATO 1972854ad6dSMasatake YAMATOUsing numerical character in the name part of tag tagfield 1980ca26c27SHiroo HAYASHI.................................................................................... 1992854ad6dSMasatake YAMATO 2002854ad6dSMasatake YAMATOThe version 2 tags file format, the default output format of 201bb84f88aSHiroo HAYASHIExuberant Ctags, accepts only alphabetical characters in the name part 2022854ad6dSMasatake YAMATOof tag tagfield. 2032854ad6dSMasatake YAMATO 204dccba5efSHiroo HAYASHIUniversal Ctags introduces an exception to this specification; it may 2052854ad6dSMasatake YAMATOuse numerical characters in addition to alphabetical characters as the 2062854ad6dSMasatake YAMATOletters other than initial letter of the name part. 2072854ad6dSMasatake YAMATO 208ce2f2642SHiroo HAYASHIThe kinds ``heading1``, ``heading2``, and ``heading3`` in the HTML parser 2092854ad6dSMasatake YAMATOare the examples. 210d7b51203SMasatake YAMATO 2110d8c368bSMasatake YAMATOTruncating the pattern for long input lines 2120ca26c27SHiroo HAYASHI.................................................................................... 2130d8c368bSMasatake YAMATO 2140d8c368bSMasatake YAMATOTo prevent generating overly large tags files, a pattern field is 2150d8c368bSMasatake YAMATOtruncated, by default, when its size exceeds 96 bytes. A different 2160d8c368bSMasatake YAMATOlimit can be specified with ``--pattern-length-limit=N``. Specifying 217bb84f88aSHiroo HAYASHI0 as *N* results no truncation as Exuberant Ctags does not. 2180d8c368bSMasatake YAMATO 2196bfec48fSMasatake YAMATOKind letters and names 2200ca26c27SHiroo HAYASHI.................................................................................... 2216bfec48fSMasatake YAMATO 222ce2f2642SHiroo HAYASHIA kind letter '``F``' and a kind name ``file`` are reserved in the 2236bfec48fSMasatake YAMATOmain part. A parser cannot have a kind conflicting with 2246bfec48fSMasatake YAMATOthese reserved ones. Some incompatible changes are introduced 2256bfec48fSMasatake YAMATOto follow the above rule. 2266bfec48fSMasatake YAMATO 227ce2f2642SHiroo HAYASHI* Cobol's ``file`` kind is renamed to ``fileDesc`` because the 228ce2f2642SHiroo HAYASHI kind name ``file`` is reserved. 2296bfec48fSMasatake YAMATO 230ce2f2642SHiroo HAYASHI* Ruby's '``F``' (singletonMethod) is changed to '``S``'. 2316bfec48fSMasatake YAMATO 232ce2f2642SHiroo HAYASHI* SQL's '``F``' (field) is changed to '``E``'. 23385af85b5SMasatake YAMATO 23485af85b5SMasatake YAMATOSEE ALSO 23585af85b5SMasatake YAMATO-------- 2360278c2a1SMasatake YAMATOctags(1), ctags-optlib(7), and tags(5). 237