ctags.rb 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. data/Gemfile +2 -0
  2. data/Rakefile +23 -0
  3. data/ctags.rb.gemspec +23 -0
  4. data/ext/.gitignore +3 -0
  5. data/ext/extconf.rb +15 -0
  6. data/ext/vendor/exuberant-ctags/.gitignore +6 -0
  7. data/ext/vendor/exuberant-ctags/.indent.pro +31 -0
  8. data/ext/vendor/exuberant-ctags/COPYING +340 -0
  9. data/ext/vendor/exuberant-ctags/EXTENDING.html +386 -0
  10. data/ext/vendor/exuberant-ctags/FAQ +371 -0
  11. data/ext/vendor/exuberant-ctags/INSTALL +215 -0
  12. data/ext/vendor/exuberant-ctags/INSTALL.oth +73 -0
  13. data/ext/vendor/exuberant-ctags/MAINTAINERS +88 -0
  14. data/ext/vendor/exuberant-ctags/Makefile.in +222 -0
  15. data/ext/vendor/exuberant-ctags/NEWS +871 -0
  16. data/ext/vendor/exuberant-ctags/README +73 -0
  17. data/ext/vendor/exuberant-ctags/ant.c +42 -0
  18. data/ext/vendor/exuberant-ctags/argproc.c +505 -0
  19. data/ext/vendor/exuberant-ctags/args.c +274 -0
  20. data/ext/vendor/exuberant-ctags/args.h +63 -0
  21. data/ext/vendor/exuberant-ctags/asm.c +387 -0
  22. data/ext/vendor/exuberant-ctags/asp.c +328 -0
  23. data/ext/vendor/exuberant-ctags/awk.c +81 -0
  24. data/ext/vendor/exuberant-ctags/basic.c +203 -0
  25. data/ext/vendor/exuberant-ctags/beta.c +321 -0
  26. data/ext/vendor/exuberant-ctags/c.c +2932 -0
  27. data/ext/vendor/exuberant-ctags/cobol.c +50 -0
  28. data/ext/vendor/exuberant-ctags/config.h.in +277 -0
  29. data/ext/vendor/exuberant-ctags/configure +7704 -0
  30. data/ext/vendor/exuberant-ctags/configure.ac +532 -0
  31. data/ext/vendor/exuberant-ctags/ctags.1 +1186 -0
  32. data/ext/vendor/exuberant-ctags/ctags.h +28 -0
  33. data/ext/vendor/exuberant-ctags/ctags.html +2087 -0
  34. data/ext/vendor/exuberant-ctags/ctags.spec +40 -0
  35. data/ext/vendor/exuberant-ctags/debug.c +113 -0
  36. data/ext/vendor/exuberant-ctags/debug.h +70 -0
  37. data/ext/vendor/exuberant-ctags/descrip.mms +68 -0
  38. data/ext/vendor/exuberant-ctags/dosbatch.c +42 -0
  39. data/ext/vendor/exuberant-ctags/e_amiga.h +24 -0
  40. data/ext/vendor/exuberant-ctags/e_djgpp.h +47 -0
  41. data/ext/vendor/exuberant-ctags/e_mac.h +143 -0
  42. data/ext/vendor/exuberant-ctags/e_msoft.h +76 -0
  43. data/ext/vendor/exuberant-ctags/e_os2.h +37 -0
  44. data/ext/vendor/exuberant-ctags/e_qdos.h +34 -0
  45. data/ext/vendor/exuberant-ctags/e_riscos.h +58 -0
  46. data/ext/vendor/exuberant-ctags/e_vms.h +31 -0
  47. data/ext/vendor/exuberant-ctags/eiffel.c +1352 -0
  48. data/ext/vendor/exuberant-ctags/entry.c +847 -0
  49. data/ext/vendor/exuberant-ctags/entry.h +103 -0
  50. data/ext/vendor/exuberant-ctags/erlang.c +189 -0
  51. data/ext/vendor/exuberant-ctags/flex.c +2243 -0
  52. data/ext/vendor/exuberant-ctags/fortran.c +2197 -0
  53. data/ext/vendor/exuberant-ctags/general.h +127 -0
  54. data/ext/vendor/exuberant-ctags/get.c +669 -0
  55. data/ext/vendor/exuberant-ctags/get.h +50 -0
  56. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/all-wcprops +47 -0
  57. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/entries +112 -0
  58. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/text-base/README.txt.svn-base +5 -0
  59. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/text-base/regcomp.c.svn-base +3818 -0
  60. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/text-base/regex.c.svn-base +74 -0
  61. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/text-base/regex.h.svn-base +575 -0
  62. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/text-base/regex_internal.c.svn-base +1713 -0
  63. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/text-base/regex_internal.h.svn-base +773 -0
  64. data/ext/vendor/exuberant-ctags/gnu_regex/.svn/text-base/regexec.c.svn-base +4338 -0
  65. data/ext/vendor/exuberant-ctags/gnu_regex/README.txt +5 -0
  66. data/ext/vendor/exuberant-ctags/gnu_regex/regcomp.c +3818 -0
  67. data/ext/vendor/exuberant-ctags/gnu_regex/regex.c +74 -0
  68. data/ext/vendor/exuberant-ctags/gnu_regex/regex.h +575 -0
  69. data/ext/vendor/exuberant-ctags/gnu_regex/regex_internal.c +1713 -0
  70. data/ext/vendor/exuberant-ctags/gnu_regex/regex_internal.h +773 -0
  71. data/ext/vendor/exuberant-ctags/gnu_regex/regexec.c +4338 -0
  72. data/ext/vendor/exuberant-ctags/html.c +49 -0
  73. data/ext/vendor/exuberant-ctags/jscript.c +1572 -0
  74. data/ext/vendor/exuberant-ctags/keyword.c +258 -0
  75. data/ext/vendor/exuberant-ctags/keyword.h +34 -0
  76. data/ext/vendor/exuberant-ctags/lisp.c +139 -0
  77. data/ext/vendor/exuberant-ctags/lregex.c +704 -0
  78. data/ext/vendor/exuberant-ctags/lua.c +133 -0
  79. data/ext/vendor/exuberant-ctags/mac.c +273 -0
  80. data/ext/vendor/exuberant-ctags/magic.diff +21 -0
  81. data/ext/vendor/exuberant-ctags/main.c +584 -0
  82. data/ext/vendor/exuberant-ctags/main.h +32 -0
  83. data/ext/vendor/exuberant-ctags/maintainer.mak +476 -0
  84. data/ext/vendor/exuberant-ctags/make.c +217 -0
  85. data/ext/vendor/exuberant-ctags/matlab.c +44 -0
  86. data/ext/vendor/exuberant-ctags/mk_bc3.mak +46 -0
  87. data/ext/vendor/exuberant-ctags/mk_bc5.mak +49 -0
  88. data/ext/vendor/exuberant-ctags/mk_djg.mak +18 -0
  89. data/ext/vendor/exuberant-ctags/mk_manx.mak +65 -0
  90. data/ext/vendor/exuberant-ctags/mk_mingw.mak +31 -0
  91. data/ext/vendor/exuberant-ctags/mk_mpw.mak +130 -0
  92. data/ext/vendor/exuberant-ctags/mk_mvc.mak +40 -0
  93. data/ext/vendor/exuberant-ctags/mk_os2.mak +104 -0
  94. data/ext/vendor/exuberant-ctags/mk_qdos.mak +100 -0
  95. data/ext/vendor/exuberant-ctags/mk_sas.mak +63 -0
  96. data/ext/vendor/exuberant-ctags/mkinstalldirs +40 -0
  97. data/ext/vendor/exuberant-ctags/ocaml.c +1842 -0
  98. data/ext/vendor/exuberant-ctags/options.c +1842 -0
  99. data/ext/vendor/exuberant-ctags/options.h +155 -0
  100. data/ext/vendor/exuberant-ctags/parse.c +677 -0
  101. data/ext/vendor/exuberant-ctags/parse.h +129 -0
  102. data/ext/vendor/exuberant-ctags/parsers.h +63 -0
  103. data/ext/vendor/exuberant-ctags/pascal.c +267 -0
  104. data/ext/vendor/exuberant-ctags/perl.c +382 -0
  105. data/ext/vendor/exuberant-ctags/php.c +237 -0
  106. data/ext/vendor/exuberant-ctags/python.c +771 -0
  107. data/ext/vendor/exuberant-ctags/qdos.c +106 -0
  108. data/ext/vendor/exuberant-ctags/read.c +569 -0
  109. data/ext/vendor/exuberant-ctags/read.h +116 -0
  110. data/ext/vendor/exuberant-ctags/readtags.c +959 -0
  111. data/ext/vendor/exuberant-ctags/readtags.h +252 -0
  112. data/ext/vendor/exuberant-ctags/rexx.c +39 -0
  113. data/ext/vendor/exuberant-ctags/routines.c +891 -0
  114. data/ext/vendor/exuberant-ctags/routines.h +134 -0
  115. data/ext/vendor/exuberant-ctags/ruby.c +408 -0
  116. data/ext/vendor/exuberant-ctags/scheme.c +111 -0
  117. data/ext/vendor/exuberant-ctags/sh.c +115 -0
  118. data/ext/vendor/exuberant-ctags/slang.c +41 -0
  119. data/ext/vendor/exuberant-ctags/sml.c +212 -0
  120. data/ext/vendor/exuberant-ctags/sort.c +230 -0
  121. data/ext/vendor/exuberant-ctags/sort.h +32 -0
  122. data/ext/vendor/exuberant-ctags/source.mak +122 -0
  123. data/ext/vendor/exuberant-ctags/sql.c +2112 -0
  124. data/ext/vendor/exuberant-ctags/strlist.c +281 -0
  125. data/ext/vendor/exuberant-ctags/strlist.h +54 -0
  126. data/ext/vendor/exuberant-ctags/tcl.c +116 -0
  127. data/ext/vendor/exuberant-ctags/tex.c +524 -0
  128. data/ext/vendor/exuberant-ctags/verilog.c +340 -0
  129. data/ext/vendor/exuberant-ctags/vhdl.c +835 -0
  130. data/ext/vendor/exuberant-ctags/vim.c +636 -0
  131. data/ext/vendor/exuberant-ctags/vstring.c +232 -0
  132. data/ext/vendor/exuberant-ctags/vstring.h +85 -0
  133. data/ext/vendor/exuberant-ctags/yacc.c +40 -0
  134. data/lib/ctags/exuberant.rb +45 -0
  135. data/lib/ctags/version.rb +3 -0
  136. data/lib/ctags.rb +6 -0
  137. data/test/test_ctags.rb +24 -0
  138. metadata +233 -0
@@ -0,0 +1,1186 @@
1
+ .TH CTAGS 1 "Version 5.8" "Darren Hiebert" "Exuberant Ctags"
2
+
3
+
4
+ .SH "NAME"
5
+ ctags \- Generate tag files for source code
6
+
7
+
8
+ .SH SYNOPSIS
9
+ .TP 6
10
+ \fBctags\fP [\fBoptions\fP] [\fIfile(s)\fP]
11
+ .TP 6
12
+ \fBetags\fP [\fBoptions\fP] [\fIfile(s)\fP]
13
+
14
+
15
+ .SH "DESCRIPTION"
16
+ The \fBctags\fP and \fBetags\fP programs (hereinafter collectively referred to
17
+ as \fBctags\fP, except where distinguished) generate an index (or "tag") file
18
+ for a variety of language objects found in \fIfile(s)\fP.
19
+ This tag file allows these items to be quickly and easily located by a text
20
+ editor or other utility. A "tag" signifies a language object for which an
21
+ index entry is available (or, alternatively, the index entry created for that
22
+ object).
23
+
24
+ Alternatively, \fBctags\fP can generate a cross reference file which lists, in
25
+ human readable form, information about the various source objects found in a
26
+ set of language files.
27
+
28
+ Tag index files are supported by numerous editors, which allow the user to
29
+ locate the object associated with a name appearing in a source file and jump
30
+ to the file and line which defines the name. Those known about at the time of
31
+ this release are:
32
+
33
+ .RS 4
34
+ \fBVi\fP(1) and its derivatives (e.g. Elvis, Vim, Vile, Lemmy),
35
+ \fBCRiSP\fP,
36
+ \fBEmacs\fP,
37
+ \fBFTE\fP (Folding Text Editor),
38
+ \fBJED\fP,
39
+ \fBjEdit\fP,
40
+ \fBMined\fP,
41
+ \fBNEdit\fP (Nirvana Edit),
42
+ \fBTSE\fP (The SemWare Editor),
43
+ \fBUltraEdit\fP,
44
+ \fBWorkSpace\fP,
45
+ \fBX2\fP,
46
+ \fBZeus\fP
47
+ .RE
48
+
49
+ \fBCtags\fP is capable of generating different kinds of tags for each of many
50
+ different languages. For a complete list of supported languages, the names
51
+ by which they are recognized, and the kinds of tags which are generated for
52
+ each, see the \fB\-\-list\-languages\fP and \fB\-\-list\-kinds\fP options.
53
+
54
+
55
+ .SH "SOURCE FILES"
56
+
57
+ Unless the \fB\-\-language\-force\fP option is specified, the language of each
58
+ source file is automatically selected based upon a mapping of file names to
59
+ languages. The mappings in effect for each language may be display using the
60
+ \fB\-\-list\-maps\fP option and may be changed using the \fB\-\-langmap\fP option.
61
+ On platforms which support it, if the name of a file is not mapped
62
+ to a language and the file is executable, the first line of the file is
63
+ checked to see if the file is a "#!" script for a recognized language.
64
+
65
+ By default, all other files names are ignored. This permits running
66
+ \fBctags\fP on all files in either a single directory (e.g. "ctags *"), or on
67
+ all files in an entire source directory tree (e.g. "ctags \-R"), since only
68
+ those files whose names are mapped to languages will be scanned.
69
+
70
+ [The reason that .h extensions are mapped to C++ files rather than C files
71
+ is because it is common to use .h extensions in C++, and no harm results in
72
+ treating them as C++ files.]
73
+
74
+
75
+ .SH "OPTIONS"
76
+
77
+ Despite the wealth of available options, defaults are set so that \fBctags\fP
78
+ is most commonly executed without any options (e.g. "ctags *", or "ctags \-R"),
79
+ which will create a tag file in the current directory for all recognized
80
+ source files. The options described below are provided merely to allow custom
81
+ tailoring to meet special needs.
82
+
83
+ Note that spaces separating the single-letter options from their parameters
84
+ are optional.
85
+
86
+ Note also that the boolean parameters to the long form options (those
87
+ beginning with "\-\-" and that take a "\fI[=yes\fP|\fIno]\fP" parameter) may
88
+ be omitted, in which case "\fB=\fP\fIyes\fP" is implied. (e.g. \fB\-\-sort\fP
89
+ is equivalent to \fB\-\-sort\fP=\fIyes\fP). Note further that "=\fI1\fP" and
90
+ "=\fIon\fP" are considered synonyms for "=\fIyes\fP", and that "=\fI0\fP"
91
+ and "=\fIoff\fP" are considered synonyms for "=\fIno\fP".
92
+
93
+ Some options are either ignored or useful only when used while running in
94
+ etags mode (see \fB\-e\fP option). Such options will be noted.
95
+
96
+ Most options may appear anywhere on the command line, affecting only those
97
+ files which follow the option. A few options, however, must appear before the
98
+ first file name and will be noted as such.
99
+
100
+ Options taking language names will accept those names in either upper or lower
101
+ case. See the \fB\-\-list\-languages\fP option for a complete list of the
102
+ built-in language names.
103
+
104
+ .TP 5
105
+ .B \-a
106
+ Equivalent to \fB\-\-append\fP.
107
+
108
+ .TP 5
109
+ .B \-B
110
+ Use backward searching patterns (e.g. ?pattern?). [Ignored in etags mode]
111
+
112
+ .TP 5
113
+ .B \-e
114
+ Enable etags mode, which will create a tag file for use with the Emacs editor.
115
+ Alternatively, if \fBctags\fP is invoked by a name containing the string
116
+ "etags" (either by renaming, or creating a link to, the executable), etags
117
+ mode will be enabled. This option must appear before the first file name.
118
+
119
+ .TP 5
120
+ .BI \-f " tagfile"
121
+ Use the name specified by \fItagfile\fP for the tag file (default is "tags",
122
+ or "TAGS" when running in etags mode). If \fItagfile\fP is specified as
123
+ "\-", then the tag file is written to standard output instead. \fBCtags\fP
124
+ will stubbornly refuse to take orders if \fItagfile\fP exists and its first
125
+ line contains something other than a valid tags line. This will save your neck
126
+ if you mistakenly type "ctags \-f *.c", which would otherwise overwrite your
127
+ first C file with the tags generated by the rest! It will also refuse to
128
+ accept a multi-character file name which begins with a '\-' (dash) character,
129
+ since this most likely means that you left out the tag file name and this
130
+ option tried to grab the next option as the file name. If you really want to
131
+ name your output tag file "\-ugly", specify it as "./\-ugly". This option must
132
+ appear before the first file name. If this option is specified more than once,
133
+ only the last will apply.
134
+
135
+ .TP 5
136
+ .B \-F
137
+ Use forward searching patterns (e.g. /pattern/) (default).
138
+ [Ignored in etags mode]
139
+
140
+ .TP 5
141
+ .BI \-h " list"
142
+ Specifies a list of file extensions, separated by periods, which are to be
143
+ interpreted as include (or header) files. To indicate files having no
144
+ extension, use a period not followed by a non-period character (e.g. ".",
145
+ "..x", ".x."). This option only affects how the scoping of a particular kinds
146
+ of tags is interpreted (i.e. whether or not they are considered as globally
147
+ visible or visible only within the file in which they are defined); it does
148
+ not map the extension to any particular language. Any tag which is located in
149
+ a non-include file and cannot be seen (e.g. linked to) from another file is
150
+ considered to have file-limited (e.g. static) scope. No kind of tag appearing
151
+ in an include file will be considered to have file-limited scope. If the first
152
+ character in the list is a plus sign, then the extensions in the list will be
153
+ appended to the current list; otherwise, the list will replace the current
154
+ list. See, also, the \fB\-\-file\-scope\fP option. The default list is
155
+ ".h.H.hh.hpp.hxx.h++.inc.def". To restore the default list, specify \fB\-h\fP
156
+ \fIdefault\fP. Note that if an extension supplied to this option is not
157
+ already mapped to a particular language (see \fBSOURCE FILES\fP, above), you
158
+ will also need to use either the \fB\-\-langmap\fP or \fB\-\-language\-force\fP
159
+ option.
160
+
161
+ .TP 5
162
+ .BI \-I " identifier\-list"
163
+ Specifies a list of identifiers which are to be specially handled while
164
+ parsing C and C++ source files. This option is specifically provided to handle
165
+ special cases arising through the use of preprocessor macros. When the
166
+ identifiers listed are simple identifiers, these identifiers will be ignored
167
+ during parsing of the source files. If an identifier is suffixed with a '+'
168
+ character, \fBctags\fP will also ignore any parenthesis-enclosed argument list
169
+ which may immediately follow the identifier in the source files. If two
170
+ identifiers are separated with the '=' character, the first identifiers is
171
+ replaced by the second identifiers for parsing purposes. The list of
172
+ identifiers may be supplied directly on the command line or read in from a
173
+ separate file. If the first character of \fIidentifier\-list\fP is '@', '.' or
174
+ a pathname separator ('/' or '\\'), or the first two characters specify a
175
+ drive letter (e.g. "C:"), the parameter \fIidentifier\-list\fP will be
176
+ interpreted as a filename from which to read a list of identifiers, one per
177
+ input line. Otherwise, \fIidentifier\-list\fP is a list of identifiers (or
178
+ identifier pairs) to be specially handled, each delimited by a either a comma
179
+ or by white space (in which case the list should be quoted to keep the entire
180
+ list as one command line argument). Multiple \fB\-I\fP options may be supplied.
181
+ To clear the list of ignore identifiers, supply a single dash ("\-") for
182
+ \fIidentifier\-list\fP.
183
+
184
+ This feature is useful when preprocessor macros are used in such a way that
185
+ they cause syntactic confusion due to their presence. Indeed, this is the best
186
+ way of working around a number of problems caused by the presence of
187
+ syntax-busting macros in source files (see \fBCAVEATS\fP, below). Some
188
+ examples will illustrate this point.
189
+
190
+ .RS 8
191
+ int foo ARGDECL4(void *, ptr, long int, nbytes)
192
+ .RE
193
+
194
+ .IP
195
+ In the above example, the macro "ARGDECL4" would be mistakenly interpreted to
196
+ be the name of the function instead of the correct name of "foo". Specifying
197
+ \fB\-I\fP \fIARGDECL4\fP results in the correct behavior.
198
+
199
+ .RS 8
200
+ /* creates an RCS version string in module */
201
+ .br
202
+ MODULE_VERSION("$Revision: 690 $")
203
+ .RE
204
+
205
+ .IP
206
+ In the above example the macro invocation looks too much like a function
207
+ definition because it is not followed by a semicolon (indeed, it could even be
208
+ followed by a global variable definition that would look much like a K&R style
209
+ function parameter declaration). In fact, this seeming function definition
210
+ could possibly even cause the rest of the file to be skipped over while trying
211
+ to complete the definition. Specifying \fB\-I\fP \fIMODULE_VERSION+\fP would
212
+ avoid such a problem.
213
+
214
+ .RS 8
215
+ CLASS Example {
216
+ .br
217
+ // your content here
218
+ .br
219
+ };
220
+ .RE
221
+
222
+ .IP
223
+ The example above uses "CLASS" as a preprocessor macro which expands to
224
+ something different for each platform. For instance CLASS may be defined as
225
+ "class __declspec(dllexport)" on Win32 platforms and simply "class" on UNIX.
226
+ Normally, the absence of the C++ keyword "class" would cause the source file
227
+ to be incorrectly parsed. Correct behavior can be restored by specifying
228
+ \fB\-I\fP \fICLASS=class\fP.
229
+
230
+ .TP 5
231
+ .BI \-L " file"
232
+ Read from \fIfile\fP a list of file names for which tags should be generated.
233
+ If \fIfile\fP is specified as "\-", then file names are read from standard
234
+ input. File names read using this option are processed following file names
235
+ appearing on the command line. Options are also accepted in this input. If
236
+ this option is specified more than once, only the last will apply. \fBNote:\fP
237
+ \fIfile\fP is read in line-oriented mode, where a new line is the only
238
+ delimiter and non-trailing white space is considered significant, in order
239
+ that file names containing spaces may be supplied (however, trailing white
240
+ space is stripped from lines); this can affect how options are parsed if
241
+ included in the input.
242
+
243
+ .TP 5
244
+ .B \-n
245
+ Equivalent to \fB\-\-excmd\fP=\fInumber\fP.
246
+
247
+ .TP 5
248
+ .B \-N
249
+ Equivalent to \fB\-\-excmd\fP=\fIpattern\fP.
250
+
251
+ .TP 5
252
+ .BI \-o " tagfile"
253
+ Equivalent to \fB\-f\fP \fItagfile\fP.
254
+
255
+ .TP 5
256
+ .B \-R
257
+ Equivalent to \fB\-\-recurse\fP.
258
+
259
+ .TP 5
260
+ .B \-u
261
+ Equivalent to \fB\-\-sort\fP=\fIno\fP (i.e. "unsorted").
262
+
263
+ .TP 5
264
+ .B \-V
265
+ Equivalent to \fB\-\-verbose\fP.
266
+
267
+ .TP 5
268
+ .B \-w
269
+ This option is silently ignored for backward-compatibility with the ctags
270
+ of SVR4 Unix.
271
+
272
+ .TP 5
273
+ .B \-x
274
+ Print a tabular, human-readable cross reference (xref) file to standard output
275
+ instead of generating a tag file. The information contained in the output
276
+ includes: the tag name; the kind of tag; the line number, file name, and
277
+ source line (with extra white space condensed) of the file which defines the
278
+ tag. No tag file is written and all options affecting tag file output will be
279
+ ignored. Example applications for this feature are generating a listing of all
280
+ functions located in a source file (e.g. \fBctags \-x \-\-c\-kinds\fP=\fIf\fP
281
+ \fIfile\fP), or generating a list of all externally visible global variables
282
+ located in a source file (e.g. \fBctags \-x \-\-c\-kinds\fP=\fIv\fP
283
+ \fB\-\-file\-scope\fP=\fIno file\fP). This option must appear before the first
284
+ file name.
285
+
286
+ .TP 5
287
+ \fB\-\-append\fP[=\fIyes\fP|\fIno\fP]
288
+ Indicates whether tags generated from the specified files should be appended
289
+ to those already present in the tag file or should replace them. This option
290
+ is off by default. This option must appear before the first file name.
291
+
292
+ .TP 5
293
+ \fB\-\-etags\-include\fP=\fIfile\fP
294
+ Include a reference to \fIfile\fP in the tag file. This option may be
295
+ specified as many times as desired. This supports Emacs' capability to use a
296
+ tag file which "includes" other tag files. [Available only in etags mode]
297
+
298
+ .TP 5
299
+ \fB\-\-exclude\fP=[\fIpattern\fP]
300
+ Add \fIpattern\fP to a list of excluded files and directories. This option
301
+ may be specified as many times as desired. For each file name considered by
302
+ \fBctags\fP, each \fIpattern\fP specified using this option will be compared
303
+ against both the complete path (e.g. some/path/base.ext) and the base name
304
+ (e.g. base.ext) of the file, thus allowing patterns which match a given file
305
+ name irrespective of its path, or match only a specific path. If appropriate
306
+ support is available from the runtime library of your C compiler, then
307
+ \fIpattern\fP may contain the usual shell wildcards (not regular expressions)
308
+ common on Unix (be sure to quote the option parameter to protect the wildcards
309
+ from being expanded by the shell before being passed to \fBctags\fP; also be
310
+ aware that wildcards can match the slash character, '/'). You can determine if
311
+ shell wildcards are available on your platform by examining the output of the
312
+ \fB\-\-version\fP option, which will include "+wildcards" in the compiled
313
+ feature list; otherwise, \fIpattern\fP is matched against file names using a
314
+ simple textual comparison.
315
+
316
+ If \fIpattern\fP begins with the character '@', then the rest of the string
317
+ is interpreted as a file name from which to read exclusion patterns, one per
318
+ line. If \fIpattern\fP is empty, the list of excluded patterns is cleared.
319
+ Note that at program startup, the default exclude list contains "EIFGEN",
320
+ "SCCS", "RCS", and "CVS", which are names of directories for which it is
321
+ generally not desirable to descend while processing the \fB\-\-recurse\fP
322
+ option.
323
+
324
+ .TP 5
325
+ \fB\-\-excmd\fP=\fItype\fP
326
+ Determines the type of EX command used to locate tags in the source file.
327
+ [Ignored in etags mode]
328
+
329
+ The valid values for \fItype\fP (either the entire word or the first letter is
330
+ accepted) are:
331
+
332
+ .RS 5
333
+ .TP 9
334
+ .I number
335
+ Use only line numbers in the tag file for locating tags. This has four
336
+ advantages:
337
+ .PD 0
338
+ .RS 9
339
+ .TP 4
340
+ 1.
341
+ Significantly reduces the size of the resulting tag file.
342
+ .TP 4
343
+ 2.
344
+ Eliminates failures to find tags because the line defining the tag has
345
+ changed, causing the pattern match to fail (note that some editors, such as
346
+ \fBvim\fP, are able to recover in many such instances).
347
+ .TP 4
348
+ 3.
349
+ Eliminates finding identical matching, but incorrect, source lines (see
350
+ \fBBUGS\fP, below).
351
+ .TP 4
352
+ 4.
353
+ Retains separate entries in the tag file for lines which are identical in
354
+ content. In \fIpattern\fP mode, duplicate entries are dropped because the
355
+ search patterns they generate are identical, making the duplicate entries
356
+ useless.
357
+ .RE
358
+ .PD 1
359
+
360
+ .IP
361
+ However, this option has one significant drawback: changes to the source files
362
+ can cause the line numbers recorded in the tag file to no longer correspond
363
+ to the lines in the source file, causing jumps to some tags to miss the target
364
+ definition by one or more lines. Basically, this option is best used when the
365
+ source code to which it is applied is not subject to change. Selecting this
366
+ option type causes the following options to be ignored: \fB\-BF\fP.
367
+
368
+ .TP 9
369
+ .I pattern
370
+ Use only search patterns for all tags, rather than the line numbers usually
371
+ used for macro definitions. This has the advantage of not referencing obsolete
372
+ line numbers when lines have been added or removed since the tag file was
373
+ generated.
374
+
375
+ .TP 9
376
+ .I mixed
377
+ In this mode, patterns are generally used with a few exceptions. For C, line
378
+ numbers are used for macro definition tags. This was the default format
379
+ generated by the original \fBctags\fP and is, therefore, retained as the
380
+ default for this option. For Fortran, line numbers are used for common blocks
381
+ because their corresponding source lines are generally identical, making
382
+ pattern searches useless for finding all matches.
383
+ .RE
384
+
385
+ .TP 5
386
+ \fB\-\-extra\fP=\fI[+|\-]flags\fP
387
+ Specifies whether to include extra tag entries for certain kinds of
388
+ information. The parameter \fIflags\fP is a set of one-letter flags, each
389
+ representing one kind of extra tag entry to include in the tag file. If
390
+ \fIflags\fP is preceded by by either the '+' or '\-' character, the effect of
391
+ each flag is added to, or removed from, those currently enabled; otherwise the
392
+ flags replace any current settings. The meaning of each flag is as follows:
393
+
394
+ .PP
395
+ .RS 8
396
+ .TP 4
397
+ .I f
398
+ Include an entry for the base file name of every source file (e.g.
399
+ "example.c"), which addresses the first line of the file.
400
+ .TP 4
401
+ .I q
402
+ Include an extra class-qualified tag entry for each tag which is a member
403
+ of a class (for languages for which this information is extracted; currently
404
+ C++, Eiffel, and Java). The actual form of the qualified tag depends upon the
405
+ language from which the tag was derived (using a form that is most natural for
406
+ how qualified calls are specified in the language). For C++, it is in the form
407
+ "class::member"; for Eiffel and Java, it is in the form "class.member". This
408
+ may allow easier location of a specific tags when multiple occurrences of a
409
+ tag name occur in the tag file. Note, however, that this could potentially
410
+ more than double the size of the tag file.
411
+ .RE
412
+
413
+ .TP 5
414
+ \fB\-\-fields\fP=\fI[+|\-]flags\fP
415
+ Specifies the available extension fields which are to be included in the
416
+ entries of the tag file (see \fBTAG FILE FORMAT\fP, below, for more
417
+ information). The parameter \fIflags\fP is a set of one-letter flags, each
418
+ representing one type of extension field to include, with the following
419
+ meanings (disabled by default unless indicated):
420
+
421
+ .PP
422
+ .PD 0
423
+ .RS 8
424
+ .TP 4
425
+ .I a
426
+ Access (or export) of class members
427
+ .TP 4
428
+ .I f
429
+ File-restricted scoping [enabled]
430
+ .TP 4
431
+ .I i
432
+ Inheritance information
433
+ .TP 4
434
+ .I k
435
+ Kind of tag as a single letter [enabled]
436
+ .TP 4
437
+ .I K
438
+ Kind of tag as full name
439
+ .TP 4
440
+ .I l
441
+ Language of source file containing tag
442
+ .TP 4
443
+ .I m
444
+ Implementation information
445
+ .TP 4
446
+ .I n
447
+ Line number of tag definition
448
+ .TP 4
449
+ .I s
450
+ Scope of tag definition [enabled]
451
+ .TP 4
452
+ .I S
453
+ Signature of routine (e.g. prototype or parameter list)
454
+ .TP 4
455
+ .I z
456
+ Include the "kind:" key in kind field
457
+ .TP 4
458
+ .I t
459
+ Type and name of a variable or typedef as "typeref:" field [enabled]
460
+ .PD 1
461
+ .RE
462
+
463
+ .RS 5
464
+ Each letter or group of letters may be preceded by either '+' to add it to the
465
+ default set, or '\-' to exclude it. In the absence of any preceding '+' or '\-'
466
+ sign, only those kinds explicitly listed in \fIflags\fP will be included in
467
+ the output (i.e. overriding the default set). This option is ignored if the
468
+ option \fB\-\-format\fP=\fI1\fP has been specified. The default value
469
+ of this option is \fIfkst\fP.
470
+ .RE
471
+
472
+ .TP 5
473
+ \fB\-\-file\-scope\fP[=\fIyes\fP|\fIno\fP]
474
+ Indicates whether tags scoped only for a single file (i.e. tags which cannot
475
+ be seen outside of the file in which they are defined, such as "static" tags)
476
+ should be included in the output. See, also, the \fB\-h\fP option. This option
477
+ is enabled by default.
478
+
479
+ .TP 5
480
+ \fB\-\-filter\fP[=\fIyes\fP|\fIno\fP]
481
+ Causes \fBctags\fP to behave as a filter, reading source file names from
482
+ standard input and printing their tags to standard output on a file-by-file
483
+ basis. If \fB\-\-sorted\fP is enabled, tags are sorted only within the source
484
+ file in which they are defined. File names are read from standard input in
485
+ line-oriented input mode (see note for \fB\-L\fP option) and only after file
486
+ names listed on the command line or from any file supplied using the \fB\-L\fP
487
+ option. When this option is enabled, the options \fB\-f\fP, \fB\-o\fP,
488
+ and \fB\-\-totals\fP are ignored. This option is quite esoteric and is disabled
489
+ by default. This option must appear before the first file name.
490
+
491
+ .TP 5
492
+ \fB\-\-filter\-terminator\fP=\fIstring\fP
493
+ Specifies a string to print to standard output following the tags for each
494
+ file name parsed when the \fB\-\-filter\fP option is enabled. This may permit an
495
+ application reading the output of ctags to determine when the output for each
496
+ file is finished. Note that if the file name read is a directory and
497
+ \fB\-\-recurse\fP is enabled, this string will be printed only one once at the
498
+ end of all tags found for by descending the directory. This string will always
499
+ be separated from the last tag line for the file by its terminating newline.
500
+ This option is quite esoteric and is empty by default. This option must appear
501
+ before the first file name.
502
+
503
+ .TP 5
504
+ \fB\-\-format\fP=\fIlevel\fP
505
+ Change the format of the output tag file. Currently the only valid values for
506
+ \fIlevel\fP are \fI1\fP or \fI2\fP. Level 1 specifies the original tag file
507
+ format and level 2 specifies a new extended format containing extension fields
508
+ (but in a manner which retains backward-compatibility with original
509
+ \fBvi\fP(1) implementations). The default level is 2. This option must appear
510
+ before the first file name. [Ignored in etags mode]
511
+
512
+ .TP 5
513
+ .B \-\-help
514
+ Prints to standard output a detailed usage description, and then exits.
515
+
516
+ .TP 5
517
+ \fB\-\-if0\fP[=\fIyes\fP|\fIno\fP]
518
+ Indicates a preference as to whether code within an "#if 0" branch of a
519
+ preprocessor conditional should be examined for non-macro tags (macro tags are
520
+ always included). Because the intent of this construct is to disable code, the
521
+ default value of this option is \fIno\fP. Note that this indicates a
522
+ preference only and does not guarantee skipping code within an "#if 0" branch,
523
+ since the fall-back algorithm used to generate tags when preprocessor
524
+ conditionals are too complex follows all branches of a conditional. This
525
+ option is disabled by default.
526
+
527
+ .TP 5
528
+ \fB\-\-<LANG>\-kinds\fP=\fI[+|\-]kinds\fP
529
+ Specifies a list of language-specific kinds of tags (or kinds) to include in
530
+ the output file for a particular language, where \fB<LANG>\fP is
531
+ case-insensitive and is one of the built-in language names (see the
532
+ \fB\-\-list\-languages\fP option for a complete list). The parameter \fIkinds\fP
533
+ is a group of one-letter flags designating kinds of tags (particular to the
534
+ language) to either include or exclude from the output. The specific sets of
535
+ flags recognized for each language, their meanings and defaults may be list
536
+ using the \fB\-\-list\-kinds\fP option. Each letter or group of letters may be
537
+ preceded by either '+' to add it to, or '\-' to remove it from, the default
538
+ set. In the absence of any preceding '+' or '\-' sign, only those kinds
539
+ explicitly listed in \fIkinds\fP will be included in the output (i.e.
540
+ overriding the default for the specified language).
541
+
542
+ As an example for the C language, in order to add prototypes and external
543
+ variable declarations to the default set of tag kinds, but exclude macros,
544
+ use \fB\-\-c\-kinds\fP=\fI+px\-d\fP; to include only tags for functions, use
545
+ \fB\-\-c\-kinds\fP=\fIf\fP.
546
+
547
+ .TP 5
548
+ \fB\-\-langdef\fP=\fIname\fP
549
+ Defines a new user-defined language, \fIname\fP, to be parsed with regular
550
+ expressions. Once defined, \fIname\fP may be used in other options taking
551
+ language names. The typical use of this option is to first define the
552
+ language, then map file names to it using \fI\-\-langmap\fP, then specify
553
+ regular expressions using \fI\-\-regex\-<LANG>\fP to define how its tags are
554
+ found.
555
+
556
+ .TP 5
557
+ \fB\-\-langmap\fP=\fImap[,map[...]]\fP
558
+ Controls how file names are mapped to languages (see the \fB\-\-list\-maps\fP
559
+ option). Each comma-separated \fImap\fP consists of the language name (either
560
+ a built-in or user-defined language), a colon, and a list of file extensions
561
+ and/or file name patterns. A file extension is specified by preceding the
562
+ extension with a period (e.g. ".c"). A file name pattern is specified by
563
+ enclosing the pattern in parentheses (e.g. "([Mm]akefile)"). If appropriate
564
+ support is available from the runtime library of your C compiler, then the
565
+ file name pattern may contain the usual shell wildcards common on Unix (be
566
+ sure to quote the option parameter to protect the wildcards from being
567
+ expanded by the shell before being passed to \fBctags\fP). You can determine
568
+ if shell wildcards are available on your platform by examining the output of
569
+ the \fB\-\-version\fP option, which will include "+wildcards" in the compiled
570
+ feature list; otherwise, the file name patterns are matched against file names
571
+ using a simple textual comparison. When mapping a file extension, it will
572
+ first be unmapped from any other languages.
573
+
574
+ If the first character in a map is a plus sign, then the extensions and file
575
+ name patterns in that map will be appended to the current map for that
576
+ language; otherwise, the map will replace the current map. For example, to
577
+ specify that only files with extensions of .c and .x are to be treated as C
578
+ language files, use "\fB\-\-langmap\fP=\fIc:.c.x\fP"; to also add files with
579
+ extensions of .j as Java language files, specify
580
+ "\fB\-\-langmap\fP=\fIc:.c.x,java:+.j\fP". To map makefiles (e.g. files
581
+ named either "Makefile", "makefile", or having the extension ".mak") to a
582
+ language called "make", specify "\fB\-\-langmap\fP=\fImake:([Mm]akefile).mak\fP".
583
+ To map files having no extension, specify a period not followed by a
584
+ non-period character (e.g. ".", "..x", ".x."). To clear the mapping for a
585
+ particular language (thus inhibiting automatic generation of tags for that
586
+ language), specify an empty extension list (e.g.
587
+ "\fB\-\-langmap\fP=\fIfortran:\fP"). To restore the default language mappings
588
+ for all a particular language, supply the keyword "default" for the mapping.
589
+ To specify restore the default language mappings for all languages, specify
590
+ "\fB\-\-langmap\fP=\fIdefault\fP". Note that file extensions are tested before
591
+ file name patterns when inferring the language of a file.
592
+
593
+ .TP 5
594
+ \fB\-\-language\-force\fP=\fIlanguage\fP
595
+ By default, \fBctags\fP automatically selects the language of a source file,
596
+ ignoring those files whose language cannot be determined (see
597
+ \fBSOURCE FILES\fP, above). This option forces the specified \fIlanguage\fP
598
+ (case-insensitive; either built-in or user-defined) to be used for every
599
+ supplied file instead of automatically selecting the language based upon its
600
+ extension. In addition, the special value \fIauto\fP indicates that the
601
+ language should be automatically selected (which effectively disables this
602
+ option).
603
+
604
+ .TP 5
605
+ \fB\-\-languages\fP=\fI[+|\-]list\fP
606
+ Specifies the languages for which tag generation is enabled, with \fIlist\fP
607
+ containing a comma-separated list of language names (case-insensitive; either
608
+ built-in or user-defined). If the first language of \fIlist\fP is not preceded
609
+ by either a '+' or '\-', the current list will be cleared before adding or
610
+ removing the languages in \fIlist\fP. Until a '\-' is encountered, each
611
+ language in the list will be added to the current list. As either the '+' or
612
+ \&'\-' is encountered in the list, the languages following it are added or
613
+ removed from the current list, respectively. Thus, it becomes simple to
614
+ replace the current list with a new one, or to add or remove languages from
615
+ the current list. The actual list of files for which tags will be generated
616
+ depends upon the language extension mapping in effect (see the \fB\-\-langmap\fP
617
+ option). Note that all languages, including user-defined languages are enabled
618
+ unless explicitly disabled using this option. Language names included in
619
+ \fIlist\fP may be any built-in language or one previously defined with
620
+ \fB\-\-langdef\fP. The default is "all", which is also accepted as a valid
621
+ argument. See the \fB\-\-list\-languages\fP option for a complete list of the
622
+ built-in language names.
623
+
624
+ .TP 5
625
+ \fB\-\-license\fP
626
+ Prints a summary of the software license to standard output, and then exits.
627
+
628
+ .TP 5
629
+ \fB\-\-line\-directives\fP[=\fIyes\fP|\fIno\fP]
630
+ Specifies whether "#line" directives should be recognized. These are present
631
+ in the output of preprocessors and contain the line number, and possibly the
632
+ file name, of the original source file(s) from which the preprocessor output
633
+ file was generated. When enabled, this option will cause \fBctags\fP to
634
+ generate tag entries marked with the file names and line numbers of their
635
+ locations original source file(s), instead of their actual locations in the
636
+ preprocessor output. The actual file names placed into the tag file will have
637
+ the same leading path components as the preprocessor output file, since it is
638
+ assumed that the original source files are located relative to the
639
+ preprocessor output file (unless, of course, the #line directive specifies an
640
+ absolute path). This option is off by default. \fBNote:\fP This option is
641
+ generally only useful when used together with the \fB\-\-excmd\fP=\fInumber\fP
642
+ (\fB\-n\fP) option. Also, you may have to use either the \fB\-\-langmap\fP or
643
+ \fB\-\-language\-force\fP option if the extension of the preprocessor output file
644
+ is not known to \fBctags\fP.
645
+
646
+ .TP 5
647
+ \fB\-\-links\fP[=\fIyes\fP|\fIno\fP]
648
+ Indicates whether symbolic links (if supported) should be followed. When
649
+ disabled, symbolic links are ignored. This option is on by default.
650
+
651
+ .TP 5
652
+ \fB\-\-list\-kinds\fP[=\fIlanguage\fP|\fIall\fP]
653
+ Lists the tag kinds recognized for either the specified language or all
654
+ languages, and then exits. Each kind of tag recorded in the tag file is
655
+ represented by a one-letter flag, which is also used to filter the tags placed
656
+ into the output through use of the \fB\-\-<LANG>\-kinds\fP option. Note that some
657
+ languages and/or tag kinds may be implemented using regular expressions and
658
+ may not be available if regex support is not compiled into \fBctags\fP (see
659
+ the \fB\-\-regex\-<LANG>\fP option). Each kind listed is enabled unless followed
660
+ by "[off]".
661
+
662
+ .TP 5
663
+ \fB\-\-list\-maps\fP[=\fIlanguage\fP|\fIall\fP]
664
+ Lists the file extensions and file name patterns which associate a file name
665
+ with a language for either the specified language or all languages, and then
666
+ exits. See the \fB\-\-langmap\fP option, and \fBSOURCE FILES\fP, above.
667
+
668
+ .TP 5
669
+ \fB\-\-list\-languages\fP
670
+ Lists the names of the languages understood by \fBctags\fP, and then exits.
671
+ These language names are case insensitive and may be used in the
672
+ \fB\-\-language\-force\fP, \fB\-\-languages\fP, \fB\-\-<LANG>\-kinds\fP, and
673
+ \fB\-\-regex\-<LANG>\fP options.
674
+
675
+ .TP 5
676
+ \fB\-\-options\fP=\fIfile\fP
677
+ Read additional options from \fIfile\fP. The file should contain one option
678
+ per line. As a special case, if
679
+ \fB\-\-options\fP=\fINONE\fP is specified as the first option on the command
680
+ line, it will disable the automatic reading of any configuration options from
681
+ either a file or the environment (see \fBFILES\fP).
682
+
683
+ .TP 5
684
+ \fB\-\-recurse\fP[=\fIyes\fP|\fIno\fP]
685
+ Recurse into directories encountered in the list of supplied files. If the
686
+ list of supplied files is empty and no file list is specified with the
687
+ \fB\-L\fP option, then the current directory (i.e. ".") is assumed. Symbolic
688
+ links are followed. If you don't like these behaviors, either explicitly
689
+ specify the files or pipe the output of \fBfind\fP(1) into \fBctags \-L\-\fP
690
+ instead. \fBNote:\fP This option is not supported on all platforms at present.
691
+ It is available if the output of the \fB\-\-help\fP option includes this option.
692
+ See, also, the \fB\-\-exclude\fP to limit recursion.
693
+
694
+ .TP 5
695
+ \fB\-\-regex\-<LANG>\fP=\fI/regexp/replacement/[kind\-spec/][flags]\fP
696
+ The \fI/regexp/replacement/\fP pair define a regular expression replacement
697
+ pattern, similar in style to \fBsed\fP substitution commands, with which to
698
+ generate tags from source files mapped to the named language, \fB<LANG>\fP,
699
+ (case-insensitive; either a built-in or user-defined language). The regular
700
+ expression, \fIregexp\fP, defines an extended regular expression (roughly that
701
+ used by \fBegrep\fP(1)), which is used to locate a single source line
702
+ containing a tag and may specify tab characters using \\t. When a matching
703
+ line is found, a tag will be generated for the name defined by
704
+ \fIreplacement\fP, which generally will contain the special back-references
705
+ \\1 through \\9 to refer to matching sub-expression groups within
706
+ \fIregexp\fP. The '/' separator characters shown in the parameter to the
707
+ option can actually be replaced by any character. Note that whichever
708
+ separator character is used will have to be escaped with a backslash ('\\')
709
+ character wherever it is used in the parameter as something other than a
710
+ separator. The regular expression defined by this option is added to the
711
+ current list of regular expressions for the specified language unless the
712
+ parameter is omitted, in which case the current list is cleared.
713
+
714
+ Unless modified by \fIflags\fP, \fIregexp\fP is interpreted as a Posix
715
+ extended regular expression. The \fIreplacement\fP should expand for all
716
+ matching lines to a non-empty string of characters, or a warning message will
717
+ be reported. An optional kind specifier for tags matching \fIregexp\fP may
718
+ follow \fIreplacement\fP, which will determine what kind of tag is reported in
719
+ the "kind" extension field (see \fBTAG FILE FORMAT\fP, below). The full form
720
+ of \fIkind\-spec\fP is in the form of a single letter, a comma, a name (without
721
+ spaces), a comma, a description, followed by a separator, which specify
722
+ the short and long forms of the kind value and its textual description
723
+ (displayed using \fB\-\-list\-kinds\fP). Either the kind name and/or the
724
+ description may be omitted. If \fIkind\-spec\fP is omitted, it defaults to
725
+ "\fIr,regex\fP". Finally, \fIflags\fP are one or more single-letter characters
726
+ having the following effect upon the interpretation of \fIregexp\fP:
727
+
728
+ .PP
729
+ .RS 8
730
+ .TP 4
731
+ .I b
732
+ The pattern is interpreted as a Posix basic regular expression.
733
+ .TP 4
734
+ .I e
735
+ The pattern is interpreted as a Posix extended regular expression (default).
736
+ .TP 4
737
+ .I i
738
+ The regular expression is to be applied in a case-insensitive manner.
739
+ .RE
740
+
741
+ .RS 5
742
+ Note that this option is available only if \fBctags\fP was compiled with
743
+ support for regular expressions, which depends upon your platform. You can
744
+ determine if support for regular expressions is compiled in by examining the
745
+ output of the \fB\-\-version\fP option, which will include "+regex" in the
746
+ compiled feature list.
747
+
748
+ For more information on the regular expressions used by \fBctags\fP, see
749
+ either the \fBregex(5,7)\fP man page, or the GNU info documentation for regex
750
+ (e.g. "info regex").
751
+ .RE
752
+
753
+ .TP 5
754
+ \fB\-\-sort\fP[=\fIyes\fP|\fIno\fP|\fIfoldcase\fP]
755
+ Indicates whether the tag file should be sorted on the tag name (default is
756
+ \fIyes\fP). Note that the original \fBvi\fP(1) required sorted tags.
757
+ The \fIfoldcase\fP value specifies case insensitive (or case-folded) sorting.
758
+ Fast binary searches of tag files sorted with case-folding will require
759
+ special support from tools using tag files, such as that found in the ctags
760
+ readtags library, or Vim version 6.2 or higher (using "set ignorecase"). This
761
+ option must appear before the first file name. [Ignored in etags mode]
762
+
763
+ .TP 5
764
+ \fB\-\-tag\-relative\fP[=\fIyes\fP|\fIno\fP]
765
+ Indicates that the file paths recorded in the tag file should be relative to
766
+ the directory containing the tag file, rather than relative to the current
767
+ directory, unless the files supplied on the command line are specified with
768
+ absolute paths. This option must appear before the first file name. The
769
+ default is \fIyes\fP when running in etags mode (see the \fB\-e\fP
770
+ option), \fIno\fP otherwise.
771
+
772
+ .TP 5
773
+ \fB\-\-totals\fP[=\fIyes\fP|\fIno\fP]
774
+ Prints statistics about the source files read and the tag file written during
775
+ the current invocation of \fBctags\fP. This option is off by default.
776
+ This option must appear before the first file name.
777
+
778
+ .TP 5
779
+ \fB\-\-verbose\fP[=\fIyes\fP|\fIno\fP]
780
+ Enable verbose mode. This prints out information on option processing and a
781
+ brief message describing what action is being taken for each file considered
782
+ by \fBctags\fP. Normally, \fBctags\fP does not read command line arguments
783
+ until after options are read from the configuration files (see \fBFILES\fP,
784
+ below) and the \fBCTAGS\fP environment variable. However, if this option is
785
+ the first argument on the command line, it will take effect before any options
786
+ are read from these sources. The default is \fIno\fP.
787
+
788
+ .TP 5
789
+ \fB\-\-version\fP
790
+ Prints a version identifier for \fBctags\fP to standard output, and then
791
+ exits. This is guaranteed to always contain the string "Exuberant Ctags".
792
+
793
+
794
+ .SH "OPERATIONAL DETAILS"
795
+
796
+ As \fBctags\fP considers each file name in turn, it tries to determine the
797
+ language of the file by applying the following three tests in order: if the
798
+ file extension has been mapped to a language, if the file name matches a shell
799
+ pattern mapped to a language, and finally if the file is executable and its
800
+ first line specifies an interpreter using the Unix-style "#!" specification
801
+ (if supported on the platform). If a language was identified, the file is
802
+ opened and then the appropriate language parser is called to operate on the
803
+ currently open file. The parser parses through the file and adds an entry to
804
+ the tag file for each language object it is written to handle. See
805
+ \fBTAG FILE FORMAT\fP, below, for details on these entries.
806
+
807
+ This implementation of \fBctags\fP imposes no formatting requirements on C
808
+ code as do legacy implementations. Older implementations of ctags tended to
809
+ rely upon certain formatting assumptions in order to help it resolve coding
810
+ dilemmas caused by preprocessor conditionals.
811
+
812
+ In general, \fBctags\fP tries to be smart about conditional preprocessor
813
+ directives. If a preprocessor conditional is encountered within a statement
814
+ which defines a tag, \fBctags\fP follows only the first branch of that
815
+ conditional (except in the special case of "#if 0", in which case it follows
816
+ only the last branch). The reason for this is that failing to pursue only one
817
+ branch can result in ambiguous syntax, as in the following example:
818
+
819
+ .RS
820
+ #ifdef TWO_ALTERNATIVES
821
+ .br
822
+ struct {
823
+ .br
824
+ #else
825
+ .br
826
+ union {
827
+ .br
828
+ #endif
829
+ .RS 4
830
+ short a;
831
+ .br
832
+ long b;
833
+ .RE
834
+ }
835
+ .RE
836
+
837
+ Both branches cannot be followed, or braces become unbalanced and \fBctags\fP
838
+ would be unable to make sense of the syntax.
839
+
840
+ If the application of this heuristic fails to properly parse a file,
841
+ generally due to complicated and inconsistent pairing within the conditionals,
842
+ \fBctags\fP will retry the file using a different heuristic which does not
843
+ selectively follow conditional preprocessor branches, but instead falls back
844
+ to relying upon a closing brace ("}") in column 1 as indicating the end of a
845
+ block once any brace imbalance results from following a #if conditional branch.
846
+
847
+ \fBCtags\fP will also try to specially handle arguments lists enclosed in
848
+ double sets of parentheses in order to accept the following conditional
849
+ construct:
850
+
851
+ .RS
852
+ extern void foo __ARGS((int one, char two));
853
+ .RE
854
+
855
+ Any name immediately preceding the "((" will be automatically ignored and
856
+ the previous name will be used.
857
+
858
+ C++ operator definitions are specially handled. In order for consistency with
859
+ all types of operators (overloaded and conversion), the operator name in the
860
+ tag file will always be preceded by the string "operator " (i.e. even if the
861
+ actual operator definition was written as "operator<<").
862
+
863
+ After creating or appending to the tag file, it is sorted by the tag name,
864
+ removing identical tag lines.
865
+
866
+
867
+ .SH "TAG FILE FORMAT"
868
+
869
+ When not running in etags mode, each entry in the tag file consists of a
870
+ separate line, each looking like this in the most general case:
871
+
872
+ .RS 1
873
+ tag_name<TAB>file_name<TAB>ex_cmd;"<TAB>extension_fields
874
+ .RE
875
+
876
+ The fields and separators of these lines are specified as follows:
877
+
878
+ .PD 0
879
+ .RS 4
880
+ .TP 4
881
+ 1.
882
+ tag name
883
+ .TP 4
884
+ 2.
885
+ single tab character
886
+ .TP 4
887
+ 3.
888
+ name of the file in which the object associated with the tag is located
889
+ .TP 4
890
+ 4.
891
+ single tab character
892
+ .TP 4
893
+ 5.
894
+ EX command used to locate the tag within the file; generally a search pattern
895
+ (either /pattern/ or ?pattern?) or line number (see \fB\-\-excmd\fP). Tag file
896
+ format 2 (see \fB\-\-format\fP) extends this EX command under certain
897
+ circumstances to include a set of extension fields (described below) embedded
898
+ in an EX comment immediately appended to the EX command, which leaves it
899
+ backward-compatible with original \fBvi\fP(1) implementations.
900
+ .RE
901
+ .PD 1
902
+
903
+ A few special tags are written into the tag file for internal purposes. These
904
+ tags are composed in such a way that they always sort to the top of the file.
905
+ Therefore, the first two characters of these tags are used a magic number to
906
+ detect a tag file for purposes of determining whether a valid tag file is
907
+ being overwritten rather than a source file.
908
+
909
+ Note that the name of each source file will be recorded in the tag file
910
+ exactly as it appears on the command line. Therefore, if the path you
911
+ specified on the command line was relative to the current directory, then it
912
+ will be recorded in that same manner in the tag file. See, however, the
913
+ \fB\-\-tag\-relative\fP option for how this behavior can be modified.
914
+
915
+ Extension fields are tab-separated key-value pairs appended to the end of the
916
+ EX command as a comment, as described above. These key value pairs appear in
917
+ the general form "\fIkey\fP:\fIvalue\fP". Their presence in the lines of the
918
+ tag file are controlled by the \fB\-\-fields\fP option. The possible keys and
919
+ the meaning of their values are as follows:
920
+
921
+ .TP 12
922
+ .I access
923
+ Indicates the visibility of this class member, where \fIvalue\fP is specific
924
+ to the language.
925
+
926
+ .TP 12
927
+ .I file
928
+ Indicates that the tag has file-limited visibility. This key has no
929
+ corresponding value.
930
+
931
+ .TP 12
932
+ .I kind
933
+ Indicates the type, or kind, of tag. Its value is either one of the
934
+ corresponding one-letter flags described under the various
935
+ \fB\-\-<LANG>\-kinds\fP options above, or a full name. It is permitted (and is,
936
+ in fact, the default) for the key portion of this field to be omitted. The
937
+ optional behaviors are controlled with the \fB\-\-fields\fP option.
938
+
939
+ .TP 12
940
+ .I implementation
941
+ When present, this indicates a limited implementation (abstract vs. concrete)
942
+ of a routine or class, where \fIvalue\fP is specific to the language
943
+ ("virtual" or "pure virtual" for C++; "abstract" for Java).
944
+
945
+ .TP 12
946
+ .I inherits
947
+ When present, \fIvalue\fP. is a comma-separated list of classes from which
948
+ this class is derived (i.e. inherits from).
949
+
950
+ .TP 12
951
+ .I signature
952
+ When present, \fIvalue\fP is a language-dependent representation of the
953
+ signature of a routine. A routine signature in its complete form specifies the
954
+ return type of a routine and its formal argument list. This extension field is
955
+ presently supported only for C-based languages and does not include the return
956
+ type.
957
+
958
+ .PP
959
+ In addition, information on the scope of the tag definition may be available,
960
+ with the key portion equal to some language-dependent construct name and its
961
+ value the name declared for that construct in the program. This scope entry
962
+ indicates the scope in which the tag was found. For example, a tag generated
963
+ for a C structure member would have a scope looking like "struct:myStruct".
964
+
965
+
966
+ .SH "HOW TO USE WITH VI"
967
+ Vi will, by default, expect a tag file by the name "tags" in the current
968
+ directory. Once the tag file is built, the following commands exercise the tag
969
+ indexing feature:
970
+ .TP 12
971
+ .B vi \-t tag
972
+ Start vi and position the cursor at the file and line where "tag" is defined.
973
+ .TP 12
974
+ .B :ta tag
975
+ Find a tag.
976
+ .TP 12
977
+ .B Ctrl-]
978
+ Find the tag under the cursor.
979
+ .TP 12
980
+ .B Ctrl-T
981
+ Return to previous location before jump to tag (not widely implemented).
982
+
983
+
984
+ .SH "HOW TO USE WITH GNU EMACS"
985
+ Emacs will, by default, expect a tag file by the name "TAGS" in the current
986
+ directory. Once the tag file is built, the following commands exercise the
987
+ tag indexing feature:
988
+ .TP 10
989
+ .B "M-x visit\-tags\-table <RET> FILE <RET>"
990
+ Select the tag file, "FILE", to use.
991
+ .TP 10
992
+ .B "M-. [TAG] <RET>"
993
+ Find the first definition of TAG. The default tag is the identifier under the
994
+ cursor.
995
+ .TP 10
996
+ .B "M-*"
997
+ Pop back to where you previously invoked "M-.".
998
+ .TP 10
999
+ .B "C-u M-."
1000
+ Find the next definition for the last tag.
1001
+
1002
+ .PP
1003
+ For more commands, see the \fITags\fP topic in the Emacs info document.
1004
+
1005
+
1006
+ .SH "HOW TO USE WITH NEDIT"
1007
+ NEdit version 5.1 and later can handle the new extended tag file format (see
1008
+ \fB\-\-format\fP). To make NEdit use the tag file, select "File\->Load Tags
1009
+ File". To jump to the definition for a tag, highlight the word, the press
1010
+ Ctrl-D. NEdit 5.1 can can read multiple tag files from different directories.
1011
+ Setting the X resource nedit.tagFile to the name of a tag file instructs NEdit
1012
+ to automatically load that tag file at startup time.
1013
+
1014
+
1015
+ .SH "CAVEATS"
1016
+ Because \fBctags\fP is neither a preprocessor nor a compiler, use of
1017
+ preprocessor macros can fool \fBctags\fP into either missing tags or
1018
+ improperly generating inappropriate tags. Although \fBctags\fP has been
1019
+ designed to handle certain common cases, this is the single biggest cause of
1020
+ reported problems. In particular, the use of preprocessor constructs which
1021
+ alter the textual syntax of C can fool \fBctags\fP. You can work around many
1022
+ such problems by using the \fB\-I\fP option.
1023
+
1024
+ Note that since \fBctags\fP generates patterns for locating tags (see
1025
+ the \fB\-\-excmd\fP option), it is entirely possible that the wrong line may be
1026
+ found by your editor if there exists another source line which is identical to
1027
+ the line containing the tag. The following example demonstrates this condition:
1028
+
1029
+ .RS
1030
+ int variable;
1031
+
1032
+ /* ... */
1033
+ .br
1034
+ void foo(variable)
1035
+ .br
1036
+ int variable;
1037
+ .br
1038
+ {
1039
+ .RS 4
1040
+ /* ... */
1041
+ .RE
1042
+ }
1043
+ .RE
1044
+
1045
+ Depending upon which editor you use and where in the code you happen to be, it
1046
+ is possible that the search pattern may locate the local parameter declaration
1047
+ in foo() before it finds the actual global variable definition, since the
1048
+ lines (and therefore their search patterns are identical). This can be avoided
1049
+ by use of the \fB\-\-excmd\fP=\fIn\fP option.
1050
+
1051
+
1052
+ .SH "BUGS"
1053
+ \fBCtags\fP has more options than \fBls\fP(1).
1054
+
1055
+ When parsing a C++ member function definition (e.g. "className::function"),
1056
+ \fBctags\fP cannot determine whether the scope specifier is a class name or a
1057
+ namespace specifier and always lists it as a class name in the scope portion
1058
+ of the extension fields. Also, if a C++ function is defined outside of the
1059
+ class declaration (the usual case), the access specification (i.e. public,
1060
+ protected, or private) and implementation information (e.g. virtual, pure
1061
+ virtual) contained in the function declaration are not known when the tag is
1062
+ generated for the function definition. It will, however be available for
1063
+ prototypes (e.g \fB\-\-c++\-kinds\fP=\fI+p\fP).
1064
+
1065
+ No qualified tags are generated for language objects inherited into a class.
1066
+
1067
+
1068
+ .SH "ENVIRONMENT VARIABLES"
1069
+
1070
+ .TP 8
1071
+ .B CTAGS
1072
+ If this environment variable exists, it will be expected to contain a set of
1073
+ default options which are read when \fBctags\fP starts, after the
1074
+ configuration files listed in \fBFILES\fP, below, are read, but before any
1075
+ command line options are read. Options appearing on the command line will
1076
+ override options specified in this variable. Only options will be read from
1077
+ this variable. Note that all white space in this variable is considered a
1078
+ separator, making it impossible to pass an option parameter containing an
1079
+ embedded space. If this is a problem, use a configuration file instead.
1080
+
1081
+ .TP 8
1082
+ .B ETAGS
1083
+ Similar to the \fBCTAGS\fP variable above, this variable, if found, will be
1084
+ read when \fBetags\fP starts. If this variable is not found, \fBetags\fP will
1085
+ try to use \fBCTAGS\fP instead.
1086
+
1087
+ .TP 8
1088
+ .B TMPDIR
1089
+ On Unix-like hosts where mkstemp() is available, the value of this variable
1090
+ specifies the directory in which to place temporary files. This can be useful
1091
+ if the size of a temporary file becomes too large to fit on the partition
1092
+ holding the default temporary directory defined at compilation time.
1093
+ \fBctags\fP creates temporary files only if either (1) an emacs-style tag file
1094
+ is being generated, (2) the tag file is being sent to standard output, or (3)
1095
+ the program was compiled to use an internal sort algorithm to sort the tag
1096
+ files instead of the the sort utility of the operating system. If the sort
1097
+ utility of the operating system is being used, it will generally observe this
1098
+ variable also. Note that if \fBctags\fP is setuid, the value of TMPDIR will be
1099
+ ignored.
1100
+
1101
+
1102
+ .SH "FILES"
1103
+ .PD 0
1104
+ .I /ctags.cnf (on MSDOS, MSWindows only)
1105
+ .br
1106
+ .I /etc/ctags.conf
1107
+ .br
1108
+ .I /usr/local/etc/ctags.conf
1109
+ .br
1110
+ .I $HOME/.ctags
1111
+ .br
1112
+ .I $HOME/ctags.cnf (on MSDOS, MSWindows only)
1113
+ .br
1114
+ .I .ctags
1115
+ .br
1116
+ .I ctags.cnf (on MSDOS, MSWindows only)
1117
+ .IP
1118
+ If any of these configuration files exist, each will be expected to contain a
1119
+ set of default options which are read in the order listed when \fBctags\fP
1120
+ starts, but before the \fBCTAGS\fP environment variable is read or any command
1121
+ line options are read. This makes it possible to set up site-wide, personal
1122
+ or project-level defaults. It is possible to compile \fBctags\fP to read an
1123
+ additional configuration file before any of those shown above, which will be
1124
+ indicated if the output produced by the \fB\-\-version\fP option lists the
1125
+ "custom-conf" feature. Options appearing in the \fBCTAGS\fP environment
1126
+ variable or on the command line will override options specified in these
1127
+ files. Only options will be read from these files. Note that the option files
1128
+ are read in line-oriented mode in which spaces are significant (since
1129
+ shell quoting is not possible). Each line of the file is read as one command
1130
+ line parameter (as if it were quoted with single quotes). Therefore, use new
1131
+ lines to indicate separate command-line arguments.
1132
+ .PD 1
1133
+
1134
+ .TP
1135
+ .I tags
1136
+ The default tag file created by \fBctags\fP.
1137
+ .TP
1138
+ .I TAGS
1139
+ The default tag file created by \fBetags\fP.
1140
+
1141
+ .SH "SEE ALSO"
1142
+ The official Exuberant Ctags web site at:
1143
+
1144
+ .RS
1145
+ http://ctags.sourceforge.net
1146
+ .RE
1147
+
1148
+ Also \fBex\fP(1), \fBvi\fP(1), \fBelvis\fP, or, better yet, \fBvim\fP, the
1149
+ official editor of \fBctags\fP. For more information on \fBvim\fP, see the VIM
1150
+ Pages web site at:
1151
+
1152
+ .RS
1153
+ http://www.vim.org/
1154
+ .RE
1155
+
1156
+
1157
+ .SH "AUTHOR"
1158
+ Darren Hiebert <dhiebert at users.sourceforge.net>
1159
+ .br
1160
+ http://DarrenHiebert.com/
1161
+
1162
+
1163
+ .SH "MOTIVATION"
1164
+ "Think ye at all times of rendering some service to every member of the human
1165
+ race."
1166
+
1167
+ "All effort and exertion put forth by man from the fullness of his heart is
1168
+ worship, if it is prompted by the highest motives and the will to do service
1169
+ to humanity."
1170
+
1171
+ .RS
1172
+ \-\- From the Baha'i Writings
1173
+ .RE
1174
+
1175
+
1176
+ .SH "CREDITS"
1177
+ This version of \fBctags\fP was originally derived from and inspired by the
1178
+ ctags program by Steve Kirkendall <kirkenda@cs.pdx.edu> that comes with the
1179
+ Elvis vi clone (though virtually none of the original code remains).
1180
+
1181
+ Credit is also due Bram Moolenaar <Bram@vim.org>, the author of \fBvim\fP, who
1182
+ has devoted so much of his time and energy both to developing the editor as a
1183
+ service to others, and to helping the orphans of Uganda.
1184
+
1185
+ The section entitled "HOW TO USE WITH GNU EMACS" was shamelessly stolen from
1186
+ the info page for GNU \fBetags\fP.