xref: /Universal-ctags/man/ctags-incompatibilities.7.rst.in (revision 67c37950ffbe32ab5aedbe0fc23212d208168366)
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