Merge pull request #11 from esorton/bugfix/add-constexpr-keyword-to-arduino-ctags
[arduino-ctags.git] / ctags.html
blob6ff0fdd5872f1cdb30809ee228ed4cdcaa960d31
1 <!-- Creator : groff version 1.19.2 -->
2 <!-- CreationDate: Thu Jul 9 17:03:58 2009 -->
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
4 "http://www.w3.org/TR/html4/loose.dtd">
5 <html>
6 <head>
7 <meta name="generator" content="groff -Thtml, see www.gnu.org">
8 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
9 <meta name="Content-Style" content="text/css">
10 <style type="text/css">
11 p { margin-top: 0; margin-bottom: 0; }
12 pre { margin-top: 0; margin-bottom: 0; }
13 table { margin-top: 0; margin-bottom: 0; }
14 </style>
15 <title>CTAGS</title>
17 </head>
18 <body>
20 <h1 align=center>CTAGS</h1>
22 <a href="#NAME">NAME</a><br>
23 <a href="#SYNOPSIS">SYNOPSIS</a><br>
24 <a href="#DESCRIPTION">DESCRIPTION</a><br>
25 <a href="#SOURCE FILES">SOURCE FILES</a><br>
26 <a href="#OPTIONS">OPTIONS</a><br>
27 <a href="#OPERATIONAL DETAILS">OPERATIONAL DETAILS</a><br>
28 <a href="#TAG FILE FORMAT">TAG FILE FORMAT</a><br>
29 <a href="#HOW TO USE WITH VI">HOW TO USE WITH VI</a><br>
30 <a href="#HOW TO USE WITH GNU EMACS">HOW TO USE WITH GNU EMACS</a><br>
31 <a href="#HOW TO USE WITH NEDIT">HOW TO USE WITH NEDIT</a><br>
32 <a href="#CAVEATS">CAVEATS</a><br>
33 <a href="#BUGS">BUGS</a><br>
34 <a href="#ENVIRONMENT VARIABLES">ENVIRONMENT VARIABLES</a><br>
35 <a href="#FILES">FILES</a><br>
36 <a href="#SEE ALSO">SEE ALSO</a><br>
37 <a href="#AUTHOR">AUTHOR</a><br>
38 <a href="#MOTIVATION">MOTIVATION</a><br>
39 <a href="#CREDITS">CREDITS</a><br>
41 <hr>
44 <a name="NAME"></a>
45 <h2>NAME</h2>
48 <p style="margin-left:11%; margin-top: 1em">ctags &minus;
49 Generate tag files for source code</p>
51 <a name="SYNOPSIS"></a>
52 <h2>SYNOPSIS</h2>
55 <p style="margin-left:11%; margin-top: 1em"><b>ctags</b>
56 [<b>options</b>] [<i>file(s)</i>] <b><br>
57 etags</b> [<b>options</b>] [<i>file(s)</i>]</p>
59 <a name="DESCRIPTION"></a>
60 <h2>DESCRIPTION</h2>
63 <p style="margin-left:11%; margin-top: 1em">The
64 <b>ctags</b> and <b>etags</b> programs (hereinafter
65 collectively referred to as <b>ctags</b>, except where
66 distinguished) generate an index (or &quot;tag&quot;) file
67 for a variety of language objects found in <i>file(s)</i>.
68 This tag file allows these items to be quickly and easily
69 located by a text editor or other utility. A &quot;tag&quot;
70 signifies a language object for which an index entry is
71 available (or, alternatively, the index entry created for
72 that object).</p>
74 <p style="margin-left:11%; margin-top: 1em">Alternatively,
75 <b>ctags</b> can generate a cross reference file which
76 lists, in human readable form, information about the various
77 source objects found in a set of language files.</p>
79 <p style="margin-left:11%; margin-top: 1em">Tag index files
80 are supported by numerous editors, which allow the user to
81 locate the object associated with a name appearing in a
82 source file and jump to the file and line which defines the
83 name. Those known about at the time of this release are:</p>
85 <p style="margin-left:17%; margin-top: 1em"><b>Vi</b>(1)
86 and its derivatives (e.g. Elvis, Vim, Vile, Lemmy),
87 <b>CRiSP</b>, <b>Emacs</b>, <b>FTE</b> (Folding Text
88 Editor), <b>JED</b>, <b>jEdit</b>, <b>Mined</b>,
89 <b>NEdit</b> (Nirvana Edit), <b>TSE</b> (The SemWare
90 Editor), <b>UltraEdit</b>, <b>WorkSpace</b>, <b>X2</b>,
91 <b>Zeus</b></p>
93 <p style="margin-left:11%; margin-top: 1em"><b>Ctags</b> is
94 capable of generating different kinds of tags for each of
95 many different languages. For a complete list of supported
96 languages, the names by which they are recognized, and the
97 kinds of tags which are generated for each, see the
98 <b>&minus;&minus;list&minus;languages</b> and
99 <b>&minus;&minus;list&minus;kinds</b> options.</p>
101 <a name="SOURCE FILES"></a>
102 <h2>SOURCE FILES</h2>
105 <p style="margin-left:11%; margin-top: 1em">Unless the
106 <b>&minus;&minus;language&minus;force</b> option is
107 specified, the language of each source file is automatically
108 selected based upon a mapping of file names to languages.
109 The mappings in effect for each language may be display
110 using the <b>&minus;&minus;list&minus;maps</b> option and
111 may be changed using the <b>&minus;&minus;langmap</b>
112 option. On platforms which support it, if the name of a file
113 is not mapped to a language and the file is executable, the
114 first line of the file is checked to see if the file is a
115 &quot;#!&quot; script for a recognized language.</p>
117 <p style="margin-left:11%; margin-top: 1em">By default, all
118 other files names are ignored. This permits running
119 <b>ctags</b> on all files in either a single directory (e.g.
120 &quot;ctags *&quot;), or on all files in an entire source
121 directory tree (e.g. &quot;ctags &minus;R&quot;), since only
122 those files whose names are mapped to languages will be
123 scanned.</p>
125 <p style="margin-left:11%; margin-top: 1em">[The reason
126 that .h extensions are mapped to C++ files rather than C
127 files is because it is common to use .h extensions in C++,
128 and no harm results in treating them as C++ files.]</p>
130 <a name="OPTIONS"></a>
131 <h2>OPTIONS</h2>
134 <p style="margin-left:11%; margin-top: 1em">Despite the
135 wealth of available options, defaults are set so that
136 <b>ctags</b> is most commonly executed without any options
137 (e.g. &quot;ctags *&quot;, or &quot;ctags &minus;R&quot;),
138 which will create a tag file in the current directory for
139 all recognized source files. The options described below are
140 provided merely to allow custom tailoring to meet special
141 needs.</p>
143 <p style="margin-left:11%; margin-top: 1em">Note that
144 spaces separating the single-letter options from their
145 parameters are optional.</p>
147 <p style="margin-left:11%; margin-top: 1em">Note also that
148 the boolean parameters to the long form options (those
149 beginning with &quot;&minus;&minus;&quot; and that take a
150 &quot;<i>[=yes</i>|<i>no]</i>&quot; parameter) may be
151 omitted, in which case &quot;<b>=</b><i>yes</i>&quot; is
152 implied. (e.g. <b>&minus;&minus;sort</b> is equivalent to
153 <b>&minus;&minus;sort</b>=<i>yes</i>). Note further that
154 &quot;=<i>1</i>&quot; and &quot;=<i>on</i>&quot; are
155 considered synonyms for &quot;=<i>yes</i>&quot;, and that
156 &quot;=<i>0</i>&quot; and &quot;=<i>off</i>&quot; are
157 considered synonyms for &quot;=<i>no</i>&quot;.</p>
159 <p style="margin-left:11%; margin-top: 1em">Some options
160 are either ignored or useful only when used while running in
161 etags mode (see <b>&minus;e</b> option). Such options will
162 be noted.</p>
164 <p style="margin-left:11%; margin-top: 1em">Most options
165 may appear anywhere on the command line, affecting only
166 those files which follow the option. A few options, however,
167 must appear before the first file name and will be noted as
168 such.</p>
170 <p style="margin-left:11%; margin-top: 1em">Options taking
171 language names will accept those names in either upper or
172 lower case. See the
173 <b>&minus;&minus;list&minus;languages</b> option for a
174 complete list of the built-in language names.</p>
176 <table width="100%" border=0 rules="none" frame="void"
177 cellspacing="0" cellpadding="0">
178 <tr valign="top" align="left">
179 <td width="11%"></td>
180 <td width="3%">
184 <p style="margin-top: 1em" valign="top"><b>&minus;a</b></p> </td>
185 <td width="4%"></td>
186 <td width="82%">
189 <p style="margin-top: 1em" valign="top">Equivalent to
190 <b>&minus;&minus;append</b>.</p> </td>
191 <tr valign="top" align="left">
192 <td width="11%"></td>
193 <td width="3%">
196 <p><b>&minus;B</b></p></td>
197 <td width="4%"></td>
198 <td width="82%">
201 <p>Use backward searching patterns (e.g. ?pattern?).
202 [Ignored in etags mode]</p></td>
203 <tr valign="top" align="left">
204 <td width="11%"></td>
205 <td width="3%">
208 <p><b>&minus;e</b></p></td>
209 <td width="4%"></td>
210 <td width="82%">
213 <p>Enable etags mode, which will create a tag file for use
214 with the Emacs editor. Alternatively, if <b>ctags</b> is
215 invoked by a name containing the string &quot;etags&quot;
216 (either by renaming, or creating a link to, the executable),
217 etags mode will be enabled. This option must appear before
218 the first file name.</p></td>
219 </table>
221 <p style="margin-left:11%;"><b>&minus;f</b>
222 <i>tagfile</i></p>
224 <p style="margin-left:18%;">Use the name specified by
225 <i>tagfile</i> for the tag file (default is
226 &quot;tags&quot;, or &quot;TAGS&quot; when running in etags
227 mode). If <i>tagfile</i> is specified as
228 &quot;&minus;&quot;, then the tag file is written to
229 standard output instead. <b>Ctags</b> will stubbornly refuse
230 to take orders if <i>tagfile</i> exists and its first line
231 contains something other than a valid tags line. This will
232 save your neck if you mistakenly type &quot;ctags &minus;f
233 *.c&quot;, which would otherwise overwrite your first C file
234 with the tags generated by the rest! It will also refuse to
235 accept a multi-character file name which begins with a
236 &rsquo;&minus;&rsquo; (dash) character, since this most
237 likely means that you left out the tag file name and this
238 option tried to grab the next option as the file name. If
239 you really want to name your output tag file
240 &quot;&minus;ugly&quot;, specify it as
241 &quot;./&minus;ugly&quot;. This option must appear before
242 the first file name. If this option is specified more than
243 once, only the last will apply.</p>
245 <table width="100%" border=0 rules="none" frame="void"
246 cellspacing="0" cellpadding="0">
247 <tr valign="top" align="left">
248 <td width="11%"></td>
249 <td width="3%">
253 <p style="margin-top: 1em" valign="top"><b>&minus;F</b></p> </td>
254 <td width="4%"></td>
255 <td width="82%">
258 <p style="margin-top: 1em" valign="top">Use forward
259 searching patterns (e.g. /pattern/) (default). [Ignored in
260 etags mode]</p></td>
261 </table>
263 <p style="margin-left:11%;"><b>&minus;h</b> <i>list</i></p>
265 <p style="margin-left:18%;">Specifies a list of file
266 extensions, separated by periods, which are to be
267 interpreted as include (or header) files. To indicate files
268 having no extension, use a period not followed by a
269 non-period character (e.g. &quot;.&quot;, &quot;..x&quot;,
270 &quot;.x.&quot;). This option only affects how the scoping
271 of a particular kinds of tags is interpreted (i.e. whether
272 or not they are considered as globally visible or visible
273 only within the file in which they are defined); it does not
274 map the extension to any particular language. Any tag which
275 is located in a non-include file and cannot be seen (e.g.
276 linked to) from another file is considered to have
277 file-limited (e.g. static) scope. No kind of tag appearing
278 in an include file will be considered to have file-limited
279 scope. If the first character in the list is a plus sign,
280 then the extensions in the list will be appended to the
281 current list; otherwise, the list will replace the current
282 list. See, also, the <b>&minus;&minus;file&minus;scope</b>
283 option. The default list is
284 &quot;.h.H.hh.hpp.hxx.h++.inc.def&quot;. To restore the
285 default list, specify <b>&minus;h</b> <i>default</i>. Note
286 that if an extension supplied to this option is not already
287 mapped to a particular language (see <b>SOURCE FILES</b>,
288 above), you will also need to use either the
289 <b>&minus;&minus;langmap</b> or
290 <b>&minus;&minus;language&minus;force</b> option.</p>
292 <p style="margin-left:11%;"><b>&minus;I</b>
293 <i>identifier&minus;list</i></p>
295 <p style="margin-left:18%;">Specifies a list of identifiers
296 which are to be specially handled while parsing C and C++
297 source files. This option is specifically provided to handle
298 special cases arising through the use of preprocessor
299 macros. When the identifiers listed are simple identifiers,
300 these identifiers will be ignored during parsing of the
301 source files. If an identifier is suffixed with a
302 &rsquo;+&rsquo; character, <b>ctags</b> will also ignore any
303 parenthesis-enclosed argument list which may immediately
304 follow the identifier in the source files. If two
305 identifiers are separated with the &rsquo;=&rsquo;
306 character, the first identifiers is replaced by the second
307 identifiers for parsing purposes. The list of identifiers
308 may be supplied directly on the command line or read in from
309 a separate file. If the first character of
310 <i>identifier&minus;list</i> is &rsquo;@&rsquo;,
311 &rsquo;.&rsquo; or a pathname separator (&rsquo;/&rsquo; or
312 &rsquo;\&rsquo;), or the first two characters specify a
313 drive letter (e.g. &quot;C:&quot;), the parameter
314 <i>identifier&minus;list</i> will be interpreted as a
315 filename from which to read a list of identifiers, one per
316 input line. Otherwise, <i>identifier&minus;list</i> is a
317 list of identifiers (or identifier pairs) to be specially
318 handled, each delimited by a either a comma or by white
319 space (in which case the list should be quoted to keep the
320 entire list as one command line argument). Multiple
321 <b>&minus;I</b> options may be supplied. To clear the list
322 of ignore identifiers, supply a single dash
323 (&quot;&minus;&quot;) for <i>identifier&minus;list</i>.</p>
325 <p style="margin-left:18%; margin-top: 1em">This feature is
326 useful when preprocessor macros are used in such a way that
327 they cause syntactic confusion due to their presence.
328 Indeed, this is the best way of working around a number of
329 problems caused by the presence of syntax-busting macros in
330 source files (see <b>CAVEATS</b>, below). Some examples will
331 illustrate this point.</p>
333 <p style="margin-left:23%; margin-top: 1em">int foo
334 ARGDECL4(void *, ptr, long int, nbytes)</p>
336 <p style="margin-left:18%; margin-top: 1em">In the above
337 example, the macro &quot;ARGDECL4&quot; would be mistakenly
338 interpreted to be the name of the function instead of the
339 correct name of &quot;foo&quot;. Specifying <b>&minus;I</b>
340 <i>ARGDECL4</i> results in the correct behavior.</p>
342 <p style="margin-left:23%; margin-top: 1em">/* creates an
343 RCS version string in module */ <br>
344 MODULE_VERSION(&quot;$Revision: 690 $&quot;)</p>
346 <p style="margin-left:18%; margin-top: 1em">In the above
347 example the macro invocation looks too much like a function
348 definition because it is not followed by a semicolon
349 (indeed, it could even be followed by a global variable
350 definition that would look much like a K&amp;R style
351 function parameter declaration). In fact, this seeming
352 function definition could possibly even cause the rest of
353 the file to be skipped over while trying to complete the
354 definition. Specifying <b>&minus;I</b>
355 <i>MODULE_VERSION+</i> would avoid such a problem.</p>
357 <p style="margin-left:23%; margin-top: 1em">CLASS Example {
358 <br>
359 // your content here <br>
360 };</p>
362 <p style="margin-left:18%; margin-top: 1em">The example
363 above uses &quot;CLASS&quot; as a preprocessor macro which
364 expands to something different for each platform. For
365 instance CLASS may be defined as &quot;class
366 __declspec(dllexport)&quot; on Win32 platforms and simply
367 &quot;class&quot; on UNIX. Normally, the absence of the C++
368 keyword &quot;class&quot; would cause the source file to be
369 incorrectly parsed. Correct behavior can be restored by
370 specifying <b>&minus;I</b> <i>CLASS=class</i>.</p>
372 <p style="margin-left:11%;"><b>&minus;L</b> <i>file</i></p>
374 <p style="margin-left:18%;">Read from <i>file</i> a list of
375 file names for which tags should be generated. If
376 <i>file</i> is specified as &quot;&minus;&quot;, then file
377 names are read from standard input. File names read using
378 this option are processed following file names appearing on
379 the command line. Options are also accepted in this input.
380 If this option is specified more than once, only the last
381 will apply. <b>Note:</b> <i>file</i> is read in
382 line-oriented mode, where a new line is the only delimiter
383 and non-trailing white space is considered significant, in
384 order that file names containing spaces may be supplied
385 (however, trailing white space is stripped from lines); this
386 can affect how options are parsed if included in the
387 input.</p>
389 <table width="100%" border=0 rules="none" frame="void"
390 cellspacing="0" cellpadding="0">
391 <tr valign="top" align="left">
392 <td width="11%"></td>
393 <td width="3%">
397 <p style="margin-top: 1em" valign="top"><b>&minus;n</b></p> </td>
398 <td width="4%"></td>
399 <td width="47%">
402 <p style="margin-top: 1em" valign="top">Equivalent to
403 <b>&minus;&minus;excmd</b>=<i>number</i>.</p> </td>
404 <td width="35%">
405 </td>
406 <tr valign="top" align="left">
407 <td width="11%"></td>
408 <td width="3%">
411 <p><b>&minus;N</b></p></td>
412 <td width="4%"></td>
413 <td width="47%">
416 <p>Equivalent to
417 <b>&minus;&minus;excmd</b>=<i>pattern</i>.</p> </td>
418 <td width="35%">
419 </td>
420 </table>
422 <p style="margin-left:11%;"><b>&minus;o</b>
423 <i>tagfile</i></p>
425 <p style="margin-left:18%;">Equivalent to <b>&minus;f</b>
426 <i>tagfile</i>.</p>
428 <table width="100%" border=0 rules="none" frame="void"
429 cellspacing="0" cellpadding="0">
430 <tr valign="top" align="left">
431 <td width="11%"></td>
432 <td width="3%">
436 <p style="margin-top: 1em" valign="top"><b>&minus;R</b></p> </td>
437 <td width="4%"></td>
438 <td width="82%">
441 <p style="margin-top: 1em" valign="top">Equivalent to
442 <b>&minus;&minus;recurse</b>.</p> </td>
443 <tr valign="top" align="left">
444 <td width="11%"></td>
445 <td width="3%">
448 <p><b>&minus;u</b></p></td>
449 <td width="4%"></td>
450 <td width="82%">
453 <p>Equivalent to <b>&minus;&minus;sort</b>=<i>no</i> (i.e.
454 &quot;unsorted&quot;).</p> </td>
455 <tr valign="top" align="left">
456 <td width="11%"></td>
457 <td width="3%">
460 <p><b>&minus;V</b></p></td>
461 <td width="4%"></td>
462 <td width="82%">
465 <p>Equivalent to <b>&minus;&minus;verbose</b>.</p></td>
466 <tr valign="top" align="left">
467 <td width="11%"></td>
468 <td width="3%">
471 <p><b>&minus;w</b></p></td>
472 <td width="4%"></td>
473 <td width="82%">
476 <p>This option is silently ignored for
477 backward-compatibility with the ctags of SVR4 Unix.</p></td>
478 <tr valign="top" align="left">
479 <td width="11%"></td>
480 <td width="3%">
483 <p><b>&minus;x</b></p></td>
484 <td width="4%"></td>
485 <td width="82%">
488 <p>Print a tabular, human-readable cross reference (xref)
489 file to standard output instead of generating a tag file.
490 The information contained in the output includes: the tag
491 name; the kind of tag; the line number, file name, and
492 source line (with extra white space condensed) of the file
493 which defines the tag. No tag file is written and all
494 options affecting tag file output will be ignored. Example
495 applications for this feature are generating a listing of
496 all functions located in a source file (e.g. <b>ctags
497 &minus;x &minus;&minus;c&minus;kinds</b>=<i>f file</i>), or
498 generating a list of all externally visible global variables
499 located in a source file (e.g. <b>ctags &minus;x
500 &minus;&minus;c&minus;kinds</b>=<i>v</i>
501 <b>&minus;&minus;file&minus;scope</b>=<i>no file</i>). This
502 option must appear before the first file name.</p></td>
503 </table>
506 <p style="margin-left:11%;"><b>&minus;&minus;append</b>[=<i>yes</i>|<i>no</i>]</p>
508 <p style="margin-left:18%;">Indicates whether tags
509 generated from the specified files should be appended to
510 those already present in the tag file or should replace
511 them. This option is off by default. This option must appear
512 before the first file name.</p>
515 <p style="margin-left:11%;"><b>&minus;&minus;etags&minus;include</b>=<i>file</i></p>
517 <p style="margin-left:18%;">Include a reference to
518 <i>file</i> in the tag file. This option may be specified as
519 many times as desired. This supports Emacs&rsquo; capability
520 to use a tag file which &quot;includes&quot; other tag
521 files. [Available only in etags mode]</p>
524 <p style="margin-left:11%;"><b>&minus;&minus;exclude</b>=[<i>pattern</i>]</p>
526 <p style="margin-left:18%;">Add <i>pattern</i> to a list of
527 excluded files and directories. This option may be specified
528 as many times as desired. For each file name considered by
529 <b>ctags</b>, each <i>pattern</i> specified using this
530 option will be compared against both the complete path (e.g.
531 some/path/base.ext) and the base name (e.g. base.ext) of the
532 file, thus allowing patterns which match a given file name
533 irrespective of its path, or match only a specific path. If
534 appropriate support is available from the runtime library of
535 your C compiler, then <i>pattern</i> may contain the usual
536 shell wildcards (not regular expressions) common on Unix (be
537 sure to quote the option parameter to protect the wildcards
538 from being expanded by the shell before being passed to
539 <b>ctags</b>; also be aware that wildcards can match the
540 slash character, &rsquo;/&rsquo;). You can determine if
541 shell wildcards are available on your platform by examining
542 the output of the <b>&minus;&minus;version</b> option, which
543 will include &quot;+wildcards&quot; in the compiled feature
544 list; otherwise, <i>pattern</i> is matched against file
545 names using a simple textual comparison.</p>
547 <p style="margin-left:18%; margin-top: 1em">If
548 <i>pattern</i> begins with the character &rsquo;@&rsquo;,
549 then the rest of the string is interpreted as a file name
550 from which to read exclusion patterns, one per line. If
551 <i>pattern</i> is empty, the list of excluded patterns is
552 cleared. Note that at program startup, the default exclude
553 list contains &quot;EIFGEN&quot;, &quot;SCCS&quot;,
554 &quot;RCS&quot;, and &quot;CVS&quot;, which are names of
555 directories for which it is generally not desirable to
556 descend while processing the <b>&minus;&minus;recurse</b>
557 option.</p>
560 <p style="margin-left:11%;"><b>&minus;&minus;excmd</b>=<i>type</i></p>
562 <p style="margin-left:18%;">Determines the type of EX
563 command used to locate tags in the source file. [Ignored in
564 etags mode]</p>
566 <p style="margin-left:18%; margin-top: 1em">The valid
567 values for <i>type</i> (either the entire word or the first
568 letter is accepted) are:</p>
570 <table width="100%" border=0 rules="none" frame="void"
571 cellspacing="0" cellpadding="0">
572 <tr valign="top" align="left">
573 <td width="18%"></td>
574 <td width="10%">
577 <p style="margin-top: 1em" valign="top"><i>number</i></p></td>
578 <td width="4%"></td>
579 <td width="68%">
582 <p style="margin-top: 1em" valign="top">Use only line
583 numbers in the tag file for locating tags. This has four
584 advantages:</p> </td>
585 </table>
587 <table width="100%" border=0 rules="none" frame="void"
588 cellspacing="0" cellpadding="0">
589 <tr valign="top" align="left">
590 <td width="32%"></td>
591 <td width="3%">
594 <p valign="top">1.</p></td>
595 <td width="3%"></td>
596 <td width="62%">
599 <p valign="top">Significantly reduces the size of the
600 resulting tag file.</p></td>
601 <tr valign="top" align="left">
602 <td width="32%"></td>
603 <td width="3%">
606 <p valign="top">2.</p></td>
607 <td width="3%"></td>
608 <td width="62%">
611 <p valign="top">Eliminates failures to find tags because
612 the line defining the tag has changed, causing the pattern
613 match to fail (note that some editors, such as <b>vim</b>,
614 are able to recover in many such instances).</p></td>
615 <tr valign="top" align="left">
616 <td width="32%"></td>
617 <td width="3%">
620 <p valign="top">3.</p></td>
621 <td width="3%"></td>
622 <td width="62%">
625 <p valign="top">Eliminates finding identical matching, but
626 incorrect, source lines (see <b>BUGS</b>, below).</p></td>
627 <tr valign="top" align="left">
628 <td width="32%"></td>
629 <td width="3%">
632 <p valign="top">4.</p></td>
633 <td width="3%"></td>
634 <td width="62%">
637 <p valign="top">Retains separate entries in the tag file
638 for lines which are identical in content. In <i>pattern</i>
639 mode, duplicate entries are dropped because the search
640 patterns they generate are identical, making the duplicate
641 entries useless.</p></td>
642 </table>
644 <p style="margin-left:32%; margin-top: 1em">However, this
645 option has one significant drawback: changes to the source
646 files can cause the line numbers recorded in the tag file to
647 no longer correspond to the lines in the source file,
648 causing jumps to some tags to miss the target definition by
649 one or more lines. Basically, this option is best used when
650 the source code to which it is applied is not subject to
651 change. Selecting this option type causes the following
652 options to be ignored: <b>&minus;BF</b>.</p>
654 <table width="100%" border=0 rules="none" frame="void"
655 cellspacing="0" cellpadding="0">
656 <tr valign="top" align="left">
657 <td width="18%"></td>
658 <td width="11%">
661 <p style="margin-top: 1em" valign="top"><i>pattern</i></p></td>
662 <td width="3%"></td>
663 <td width="68%">
666 <p style="margin-top: 1em" valign="top">Use only search
667 patterns for all tags, rather than the line numbers usually
668 used for macro definitions. This has the advantage of not
669 referencing obsolete line numbers when lines have been added
670 or removed since the tag file was generated.</p></td>
671 <tr valign="top" align="left">
672 <td width="18%"></td>
673 <td width="11%">
676 <p><i>mixed</i></p></td>
677 <td width="3%"></td>
678 <td width="68%">
681 <p>In this mode, patterns are generally used with a few
682 exceptions. For C, line numbers are used for macro
683 definition tags. This was the default format generated by
684 the original <b>ctags</b> and is, therefore, retained as the
685 default for this option. For Fortran, line numbers are used
686 for common blocks because their corresponding source lines
687 are generally identical, making pattern searches useless for
688 finding all matches.</p></td>
689 </table>
692 <p style="margin-left:11%;"><b>&minus;&minus;extra</b>=<i>[+|&minus;]flags</i></p>
694 <p style="margin-left:18%;">Specifies whether to include
695 extra tag entries for certain kinds of information. The
696 parameter <i>flags</i> is a set of one-letter flags, each
697 representing one kind of extra tag entry to include in the
698 tag file. If <i>flags</i> is preceded by by either the
699 &rsquo;+&rsquo; or &rsquo;&minus;&rsquo; character, the
700 effect of each flag is added to, or removed from, those
701 currently enabled; otherwise the flags replace any current
702 settings. The meaning of each flag is as follows:</p>
704 <table width="100%" border=0 rules="none" frame="void"
705 cellspacing="0" cellpadding="0">
706 <tr valign="top" align="left">
707 <td width="23%"></td>
708 <td width="2%">
711 <p style="margin-top: 1em" valign="top"><i>f</i></p></td>
712 <td width="4%"></td>
713 <td width="71%">
716 <p style="margin-top: 1em" valign="top">Include an entry
717 for the base file name of every source file (e.g.
718 &quot;example.c&quot;), which addresses the first line of
719 the file.</p></td>
720 <tr valign="top" align="left">
721 <td width="23%"></td>
722 <td width="2%">
725 <p style="margin-top: 1em" valign="top"><i>q</i></p></td>
726 <td width="4%"></td>
727 <td width="71%">
730 <p style="margin-top: 1em" valign="top">Include an extra
731 class-qualified tag entry for each tag which is a member of
732 a class (for languages for which this information is
733 extracted; currently C++, Eiffel, and Java). The actual form
734 of the qualified tag depends upon the language from which
735 the tag was derived (using a form that is most natural for
736 how qualified calls are specified in the language). For C++,
737 it is in the form &quot;class::member&quot;; for Eiffel and
738 Java, it is in the form &quot;class.member&quot;. This may
739 allow easier location of a specific tags when multiple
740 occurrences of a tag name occur in the tag file. Note,
741 however, that this could potentially more than double the
742 size of the tag file.</p></td>
743 </table>
746 <p style="margin-left:11%;"><b>&minus;&minus;fields</b>=<i>[+|&minus;]flags</i></p>
748 <p style="margin-left:18%;">Specifies the available
749 extension fields which are to be included in the entries of
750 the tag file (see <b>TAG FILE FORMAT</b>, below, for more
751 information). The parameter <i>flags</i> is a set of
752 one-letter flags, each representing one type of extension
753 field to include, with the following meanings (disabled by
754 default unless indicated):</p>
756 <table width="100%" border=0 rules="none" frame="void"
757 cellspacing="0" cellpadding="0">
758 <tr valign="top" align="left">
759 <td width="23%"></td>
760 <td width="2%">
763 <p style="margin-top: 1em" valign="top"><i>a</i></p></td>
764 <td width="4%"></td>
765 <td width="71%">
768 <p style="margin-top: 1em" valign="top">Access (or export)
769 of class members</p></td>
770 <tr valign="top" align="left">
771 <td width="23%"></td>
772 <td width="2%">
775 <p valign="top"><i>f</i></p></td>
776 <td width="4%"></td>
777 <td width="71%">
780 <p valign="top">File-restricted scoping [enabled]</p></td>
781 <tr valign="top" align="left">
782 <td width="23%"></td>
783 <td width="2%">
786 <p valign="top"><i>i</i></p></td>
787 <td width="4%"></td>
788 <td width="71%">
791 <p valign="top">Inheritance information</p></td>
792 <tr valign="top" align="left">
793 <td width="23%"></td>
794 <td width="2%">
797 <p valign="top"><i>k</i></p></td>
798 <td width="4%"></td>
799 <td width="71%">
802 <p valign="top">Kind of tag as a single letter
803 [enabled]</p> </td>
804 <tr valign="top" align="left">
805 <td width="23%"></td>
806 <td width="2%">
809 <p valign="top"><i>K</i></p></td>
810 <td width="4%"></td>
811 <td width="71%">
814 <p valign="top">Kind of tag as full name</p></td>
815 <tr valign="top" align="left">
816 <td width="23%"></td>
817 <td width="2%">
820 <p valign="top"><i>l</i></p></td>
821 <td width="4%"></td>
822 <td width="71%">
825 <p valign="top">Language of source file containing tag</p></td>
826 <tr valign="top" align="left">
827 <td width="23%"></td>
828 <td width="2%">
831 <p valign="top"><i>m</i></p></td>
832 <td width="4%"></td>
833 <td width="71%">
836 <p valign="top">Implementation information</p></td>
837 <tr valign="top" align="left">
838 <td width="23%"></td>
839 <td width="2%">
842 <p valign="top"><i>n</i></p></td>
843 <td width="4%"></td>
844 <td width="71%">
847 <p valign="top">Line number of tag definition</p></td>
848 <tr valign="top" align="left">
849 <td width="23%"></td>
850 <td width="2%">
853 <p valign="top"><i>s</i></p></td>
854 <td width="4%"></td>
855 <td width="71%">
858 <p valign="top">Scope of tag definition [enabled]</p></td>
859 <tr valign="top" align="left">
860 <td width="23%"></td>
861 <td width="2%">
864 <p valign="top"><i>S</i></p></td>
865 <td width="4%"></td>
866 <td width="71%">
869 <p valign="top">Signature of routine (e.g. prototype or
870 parameter list)</p></td>
871 <tr valign="top" align="left">
872 <td width="23%"></td>
873 <td width="2%">
876 <p valign="top"><i>z</i></p></td>
877 <td width="4%"></td>
878 <td width="71%">
881 <p valign="top">Include the &quot;kind:&quot; key in kind
882 field</p> </td>
883 <tr valign="top" align="left">
884 <td width="23%"></td>
885 <td width="2%">
888 <p valign="top"><i>t</i></p></td>
889 <td width="4%"></td>
890 <td width="71%">
893 <p valign="top">Type and name of a variable or typedef as
894 &quot;typeref:&quot; field [enabled]</p></td>
895 </table>
897 <p style="margin-left:18%; margin-top: 1em">Each letter or
898 group of letters may be preceded by either &rsquo;+&rsquo;
899 to add it to the default set, or &rsquo;&minus;&rsquo; to
900 exclude it. In the absence of any preceding &rsquo;+&rsquo;
901 or &rsquo;&minus;&rsquo; sign, only those kinds explicitly
902 listed in <i>flags</i> will be included in the output (i.e.
903 overriding the default set). This option is ignored if the
904 option <b>&minus;&minus;format</b>=<i>1</i> has been
905 specified. The default value of this option is
906 <i>fkst</i>.</p>
909 <p style="margin-left:11%;"><b>&minus;&minus;file&minus;scope</b>[=<i>yes</i>|<i>no</i>]</p>
911 <p style="margin-left:18%;">Indicates whether tags scoped
912 only for a single file (i.e. tags which cannot be seen
913 outside of the file in which they are defined, such as
914 &quot;static&quot; tags) should be included in the output.
915 See, also, the <b>&minus;h</b> option. This option is
916 enabled by default.</p>
919 <p style="margin-left:11%;"><b>&minus;&minus;filter</b>[=<i>yes</i>|<i>no</i>]</p>
921 <p style="margin-left:18%;">Causes <b>ctags</b> to behave
922 as a filter, reading source file names from standard input
923 and printing their tags to standard output on a file-by-file
924 basis. If <b>&minus;&minus;sorted</b> is enabled, tags are
925 sorted only within the source file in which they are
926 defined. File names are read from standard input in
927 line-oriented input mode (see note for <b>&minus;L</b>
928 option) and only after file names listed on the command line
929 or from any file supplied using the <b>&minus;L</b> option.
930 When this option is enabled, the options <b>&minus;f</b>,
931 <b>&minus;o</b>, and <b>&minus;&minus;totals</b> are
932 ignored. This option is quite esoteric and is disabled by
933 default. This option must appear before the first file
934 name.</p>
937 <p style="margin-left:11%;"><b>&minus;&minus;filter&minus;terminator</b>=<i>string</i></p>
939 <p style="margin-left:18%;">Specifies a string to print to
940 standard output following the tags for each file name parsed
941 when the <b>&minus;&minus;filter</b> option is enabled. This
942 may permit an application reading the output of ctags to
943 determine when the output for each file is finished. Note
944 that if the file name read is a directory and
945 <b>&minus;&minus;recurse</b> is enabled, this string will be
946 printed only one once at the end of all tags found for by
947 descending the directory. This string will always be
948 separated from the last tag line for the file by its
949 terminating newline. This option is quite esoteric and is
950 empty by default. This option must appear before the first
951 file name.</p>
954 <p style="margin-left:11%;"><b>&minus;&minus;format</b>=<i>level</i></p>
956 <p style="margin-left:18%;">Change the format of the output
957 tag file. Currently the only valid values for <i>level</i>
958 are <i>1</i> or <i>2</i>. Level 1 specifies the original tag
959 file format and level 2 specifies a new extended format
960 containing extension fields (but in a manner which retains
961 backward-compatibility with original <b>vi</b>(1)
962 implementations). The default level is 2. This option must
963 appear before the first file name. [Ignored in etags
964 mode]</p>
966 <p style="margin-left:11%;"><b>&minus;&minus;help</b></p>
968 <p style="margin-left:18%;">Prints to standard output a
969 detailed usage description, and then exits.</p>
972 <p style="margin-left:11%;"><b>&minus;&minus;if0</b>[=<i>yes</i>|<i>no</i>]</p>
974 <p style="margin-left:18%;">Indicates a preference as to
975 whether code within an &quot;#if 0&quot; branch of a
976 preprocessor conditional should be examined for non-macro
977 tags (macro tags are always included). Because the intent of
978 this construct is to disable code, the default value of this
979 option is <i>no</i>. Note that this indicates a preference
980 only and does not guarantee skipping code within an
981 &quot;#if 0&quot; branch, since the fall-back algorithm used
982 to generate tags when preprocessor conditionals are too
983 complex follows all branches of a conditional. This option
984 is disabled by default.</p>
987 <p style="margin-left:11%;"><b>&minus;&minus;&lt;LANG&gt;&minus;kinds</b>=<i>[+|&minus;]kinds</i></p>
989 <p style="margin-left:18%;">Specifies a list of
990 language-specific kinds of tags (or kinds) to include in the
991 output file for a particular language, where
992 <b>&lt;LANG&gt;</b> is case-insensitive and is one of the
993 built-in language names (see the
994 <b>&minus;&minus;list&minus;languages</b> option for a
995 complete list). The parameter <i>kinds</i> is a group of
996 one-letter flags designating kinds of tags (particular to
997 the language) to either include or exclude from the output.
998 The specific sets of flags recognized for each language,
999 their meanings and defaults may be list using the
1000 <b>&minus;&minus;list&minus;kinds</b> option. Each letter or
1001 group of letters may be preceded by either &rsquo;+&rsquo;
1002 to add it to, or &rsquo;&minus;&rsquo; to remove it from,
1003 the default set. In the absence of any preceding
1004 &rsquo;+&rsquo; or &rsquo;&minus;&rsquo; sign, only those
1005 kinds explicitly listed in <i>kinds</i> will be included in
1006 the output (i.e. overriding the default for the specified
1007 language).</p>
1009 <p style="margin-left:18%; margin-top: 1em">As an example
1010 for the C language, in order to add prototypes and external
1011 variable declarations to the default set of tag kinds, but
1012 exclude macros, use
1013 <b>&minus;&minus;c&minus;kinds</b>=<i>+px&minus;d</i>; to
1014 include only tags for functions, use
1015 <b>&minus;&minus;c&minus;kinds</b>=<i>f</i>.</p>
1018 <p style="margin-left:11%;"><b>&minus;&minus;langdef</b>=<i>name</i></p>
1020 <p style="margin-left:18%;">Defines a new user-defined
1021 language, <i>name</i>, to be parsed with regular
1022 expressions. Once defined, <i>name</i> may be used in other
1023 options taking language names. The typical use of this
1024 option is to first define the language, then map file names
1025 to it using <i>&minus;&minus;langmap</i>, then specify
1026 regular expressions using
1027 <i>&minus;&minus;regex&minus;&lt;LANG&gt;</i> to define how
1028 its tags are found.</p>
1031 <p style="margin-left:11%;"><b>&minus;&minus;langmap</b>=<i>map[,map[...]]</i></p>
1033 <p style="margin-left:18%;">Controls how file names are
1034 mapped to languages (see the
1035 <b>&minus;&minus;list&minus;maps</b> option). Each
1036 comma-separated <i>map</i> consists of the language name
1037 (either a built-in or user-defined language), a colon, and a
1038 list of file extensions and/or file name patterns. A file
1039 extension is specified by preceding the extension with a
1040 period (e.g. &quot;.c&quot;). A file name pattern is
1041 specified by enclosing the pattern in parentheses (e.g.
1042 &quot;([Mm]akefile)&quot;). If appropriate support is
1043 available from the runtime library of your C compiler, then
1044 the file name pattern may contain the usual shell wildcards
1045 common on Unix (be sure to quote the option parameter to
1046 protect the wildcards from being expanded by the shell
1047 before being passed to <b>ctags</b>). You can determine if
1048 shell wildcards are available on your platform by examining
1049 the output of the <b>&minus;&minus;version</b> option, which
1050 will include &quot;+wildcards&quot; in the compiled feature
1051 list; otherwise, the file name patterns are matched against
1052 file names using a simple textual comparison. When mapping a
1053 file extension, it will first be unmapped from any other
1054 languages.</p>
1056 <p style="margin-left:18%; margin-top: 1em">If the first
1057 character in a map is a plus sign, then the extensions and
1058 file name patterns in that map will be appended to the
1059 current map for that language; otherwise, the map will
1060 replace the current map. For example, to specify that only
1061 files with extensions of .c and .x are to be treated as C
1062 language files, use
1063 &quot;<b>&minus;&minus;langmap</b>=<i>c:.c.x</i>&quot;; to
1064 also add files with extensions of .j as Java language files,
1065 specify
1066 &quot;<b>&minus;&minus;langmap</b>=<i>c:.c.x,java:+.j</i>&quot;.
1067 To map makefiles (e.g. files named either
1068 &quot;Makefile&quot;, &quot;makefile&quot;, or having the
1069 extension &quot;.mak&quot;) to a language called
1070 &quot;make&quot;, specify
1071 &quot;<b>&minus;&minus;langmap</b>=<i>make:([Mm]akefile).mak</i>&quot;.
1072 To map files having no extension, specify a period not
1073 followed by a non-period character (e.g. &quot;.&quot;,
1074 &quot;..x&quot;, &quot;.x.&quot;). To clear the mapping for
1075 a particular language (thus inhibiting automatic generation
1076 of tags for that language), specify an empty extension list
1077 (e.g.
1078 &quot;<b>&minus;&minus;langmap</b>=<i>fortran:</i>&quot;).
1079 To restore the default language mappings for all a
1080 particular language, supply the keyword &quot;default&quot;
1081 for the mapping. To specify restore the default language
1082 mappings for all languages, specify
1083 &quot;<b>&minus;&minus;langmap</b>=<i>default</i>&quot;.
1084 Note that file extensions are tested before file name
1085 patterns when inferring the language of a file.</p>
1088 <p style="margin-left:11%;"><b>&minus;&minus;language&minus;force</b>=<i>language</i></p>
1090 <p style="margin-left:18%;">By default, <b>ctags</b>
1091 automatically selects the language of a source file,
1092 ignoring those files whose language cannot be determined
1093 (see <b>SOURCE FILES</b>, above). This option forces the
1094 specified <i>language</i> (case-insensitive; either built-in
1095 or user-defined) to be used for every supplied file instead
1096 of automatically selecting the language based upon its
1097 extension. In addition, the special value <i>auto</i>
1098 indicates that the language should be automatically selected
1099 (which effectively disables this option).</p>
1102 <p style="margin-left:11%;"><b>&minus;&minus;languages</b>=<i>[+|&minus;]list</i></p>
1104 <p style="margin-left:18%;">Specifies the languages for
1105 which tag generation is enabled, with <i>list</i> containing
1106 a comma-separated list of language names (case-insensitive;
1107 either built-in or user-defined). If the first language of
1108 <i>list</i> is not preceded by either a &rsquo;+&rsquo; or
1109 &rsquo;&minus;&rsquo;, the current list will be cleared
1110 before adding or removing the languages in <i>list</i>.
1111 Until a &rsquo;&minus;&rsquo; is encountered, each language
1112 in the list will be added to the current list. As either the
1113 &rsquo;+&rsquo; or &rsquo;&minus;&rsquo; is encountered in
1114 the list, the languages following it are added or removed
1115 from the current list, respectively. Thus, it becomes simple
1116 to replace the current list with a new one, or to add or
1117 remove languages from the current list. The actual list of
1118 files for which tags will be generated depends upon the
1119 language extension mapping in effect (see the
1120 <b>&minus;&minus;langmap</b> option). Note that all
1121 languages, including user-defined languages are enabled
1122 unless explicitly disabled using this option. Language names
1123 included in <i>list</i> may be any built-in language or one
1124 previously defined with <b>&minus;&minus;langdef</b>. The
1125 default is &quot;all&quot;, which is also accepted as a
1126 valid argument. See the
1127 <b>&minus;&minus;list&minus;languages</b> option for a
1128 complete list of the built-in language names.</p>
1131 <p style="margin-left:11%;"><b>&minus;&minus;license</b></p>
1133 <p style="margin-left:18%;">Prints a summary of the
1134 software license to standard output, and then exits.</p>
1137 <p style="margin-left:11%;"><b>&minus;&minus;line&minus;directives</b>[=<i>yes</i>|<i>no</i>]</p>
1139 <p style="margin-left:18%;">Specifies whether
1140 &quot;#line&quot; directives should be recognized. These are
1141 present in the output of preprocessors and contain the line
1142 number, and possibly the file name, of the original source
1143 file(s) from which the preprocessor output file was
1144 generated. When enabled, this option will cause <b>ctags</b>
1145 to generate tag entries marked with the file names and line
1146 numbers of their locations original source file(s), instead
1147 of their actual locations in the preprocessor output. The
1148 actual file names placed into the tag file will have the
1149 same leading path components as the preprocessor output
1150 file, since it is assumed that the original source files are
1151 located relative to the preprocessor output file (unless, of
1152 course, the #line directive specifies an absolute path).
1153 This option is off by default. <b>Note:</b> This option is
1154 generally only useful when used together with the
1155 <b>&minus;&minus;excmd</b>=<i>number</i> (<b>&minus;n</b>)
1156 option. Also, you may have to use either the
1157 <b>&minus;&minus;langmap</b> or
1158 <b>&minus;&minus;language&minus;force</b> option if the
1159 extension of the preprocessor output file is not known to
1160 <b>ctags</b>.</p>
1163 <p style="margin-left:11%;"><b>&minus;&minus;links</b>[=<i>yes</i>|<i>no</i>]</p>
1165 <p style="margin-left:18%;">Indicates whether symbolic
1166 links (if supported) should be followed. When disabled,
1167 symbolic links are ignored. This option is on by
1168 default.</p>
1171 <p style="margin-left:11%;"><b>&minus;&minus;list&minus;kinds</b>[=<i>language</i>|<i>all</i>]</p>
1173 <p style="margin-left:18%;">Lists the tag kinds recognized
1174 for either the specified language or all languages, and then
1175 exits. Each kind of tag recorded in the tag file is
1176 represented by a one-letter flag, which is also used to
1177 filter the tags placed into the output through use of the
1178 <b>&minus;&minus;&lt;LANG&gt;&minus;kinds</b> option. Note
1179 that some languages and/or tag kinds may be implemented
1180 using regular expressions and may not be available if regex
1181 support is not compiled into <b>ctags</b> (see the
1182 <b>&minus;&minus;regex&minus;&lt;LANG&gt;</b> option). Each
1183 kind listed is enabled unless followed by
1184 &quot;[off]&quot;.</p>
1187 <p style="margin-left:11%;"><b>&minus;&minus;list&minus;maps</b>[=<i>language</i>|<i>all</i>]</p>
1189 <p style="margin-left:18%;">Lists the file extensions and
1190 file name patterns which associate a file name with a
1191 language for either the specified language or all languages,
1192 and then exits. See the <b>&minus;&minus;langmap</b> option,
1193 and <b>SOURCE FILES</b>, above.</p>
1196 <p style="margin-left:11%;"><b>&minus;&minus;list&minus;languages</b></p>
1198 <p style="margin-left:18%;">Lists the names of the
1199 languages understood by <b>ctags</b>, and then exits. These
1200 language names are case insensitive and may be used in the
1201 <b>&minus;&minus;language&minus;force</b>,
1202 <b>&minus;&minus;languages</b>,
1203 <b>&minus;&minus;&lt;LANG&gt;&minus;kinds</b>, and
1204 <b>&minus;&minus;regex&minus;&lt;LANG&gt;</b> options.</p>
1207 <p style="margin-left:11%;"><b>&minus;&minus;options</b>=<i>file</i></p>
1209 <p style="margin-left:18%;">Read additional options from
1210 <i>file</i>. The file should contain one option per line. As
1211 a special case, if <b>&minus;&minus;options</b>=<i>NONE</i>
1212 is specified as the first option on the command line, it
1213 will disable the automatic reading of any configuration
1214 options from either a file or the environment (see
1215 <b>FILES</b>).</p>
1218 <p style="margin-left:11%;"><b>&minus;&minus;recurse</b>[=<i>yes</i>|<i>no</i>]</p>
1220 <p style="margin-left:18%;">Recurse into directories
1221 encountered in the list of supplied files. If the list of
1222 supplied files is empty and no file list is specified with
1223 the <b>&minus;L</b> option, then the current directory (i.e.
1224 &quot;.&quot;) is assumed. Symbolic links are followed. If
1225 you don&rsquo;t like these behaviors, either explicitly
1226 specify the files or pipe the output of <b>find</b>(1) into
1227 <b>ctags &minus;L&minus;</b> instead. <b>Note:</b> This
1228 option is not supported on all platforms at present. It is
1229 available if the output of the <b>&minus;&minus;help</b>
1230 option includes this option. See, also, the
1231 <b>&minus;&minus;exclude</b> to limit recursion.</p>
1234 <p style="margin-left:11%;"><b>&minus;&minus;regex&minus;&lt;LANG&gt;</b>=<i>/regexp/replacement/[kind&minus;spec/][flags]</i></p>
1236 <p style="margin-left:18%;">The <i>/regexp/replacement/</i>
1237 pair define a regular expression replacement pattern,
1238 similar in style to <b>sed</b> substitution commands, with
1239 which to generate tags from source files mapped to the named
1240 language, <b>&lt;LANG&gt;</b>, (case-insensitive; either a
1241 built-in or user-defined language). The regular expression,
1242 <i>regexp</i>, defines an extended regular expression
1243 (roughly that used by <b>egrep</b>(1)), which is used to
1244 locate a single source line containing a tag and may specify
1245 tab characters using \t. When a matching line is found, a
1246 tag will be generated for the name defined by
1247 <i>replacement</i>, which generally will contain the special
1248 back-references \1 through \9 to refer to matching
1249 sub-expression groups within <i>regexp</i>. The
1250 &rsquo;/&rsquo; separator characters shown in the parameter
1251 to the option can actually be replaced by any character.
1252 Note that whichever separator character is used will have to
1253 be escaped with a backslash (&rsquo;\&rsquo;) character
1254 wherever it is used in the parameter as something other than
1255 a separator. The regular expression defined by this option
1256 is added to the current list of regular expressions for the
1257 specified language unless the parameter is omitted, in which
1258 case the current list is cleared.</p>
1260 <p style="margin-left:18%; margin-top: 1em">Unless modified
1261 by <i>flags</i>, <i>regexp</i> is interpreted as a Posix
1262 extended regular expression. The <i>replacement</i> should
1263 expand for all matching lines to a non-empty string of
1264 characters, or a warning message will be reported. An
1265 optional kind specifier for tags matching <i>regexp</i> may
1266 follow <i>replacement</i>, which will determine what kind of
1267 tag is reported in the &quot;kind&quot; extension field (see
1268 <b>TAG FILE FORMAT</b>, below). The full form of
1269 <i>kind&minus;spec</i> is in the form of a single letter, a
1270 comma, a name (without spaces), a comma, a description,
1271 followed by a separator, which specify the short and long
1272 forms of the kind value and its textual description
1273 (displayed using <b>&minus;&minus;list&minus;kinds</b>).
1274 Either the kind name and/or the description may be omitted.
1275 If <i>kind&minus;spec</i> is omitted, it defaults to
1276 &quot;<i>r,regex</i>&quot;. Finally, <i>flags</i> are one or
1277 more single-letter characters having the following effect
1278 upon the interpretation of <i>regexp</i>:</p>
1280 <table width="100%" border=0 rules="none" frame="void"
1281 cellspacing="0" cellpadding="0">
1282 <tr valign="top" align="left">
1283 <td width="23%"></td>
1284 <td width="2%">
1287 <p style="margin-top: 1em" valign="top"><i>b</i></p></td>
1288 <td width="4%"></td>
1289 <td width="71%">
1292 <p style="margin-top: 1em" valign="top">The pattern is
1293 interpreted as a Posix basic regular expression.</p></td>
1294 <tr valign="top" align="left">
1295 <td width="23%"></td>
1296 <td width="2%">
1299 <p style="margin-top: 1em" valign="top"><i>e</i></p></td>
1300 <td width="4%"></td>
1301 <td width="71%">
1304 <p style="margin-top: 1em" valign="top">The pattern is
1305 interpreted as a Posix extended regular expression
1306 (default).</p> </td>
1307 <tr valign="top" align="left">
1308 <td width="23%"></td>
1309 <td width="2%">
1312 <p style="margin-top: 1em" valign="top"><i>i</i></p></td>
1313 <td width="4%"></td>
1314 <td width="71%">
1317 <p style="margin-top: 1em" valign="top">The regular
1318 expression is to be applied in a case-insensitive
1319 manner.</p> </td>
1320 </table>
1322 <p style="margin-left:18%; margin-top: 1em">Note that this
1323 option is available only if <b>ctags</b> was compiled with
1324 support for regular expressions, which depends upon your
1325 platform. You can determine if support for regular
1326 expressions is compiled in by examining the output of the
1327 <b>&minus;&minus;version</b> option, which will include
1328 &quot;+regex&quot; in the compiled feature list.</p>
1330 <p style="margin-left:18%; margin-top: 1em">For more
1331 information on the regular expressions used by <b>ctags</b>,
1332 see either the <b>regex(5,7)</b> man page, or the GNU info
1333 documentation for regex (e.g. &quot;info regex&quot;).</p>
1336 <p style="margin-left:11%;"><b>&minus;&minus;sort</b>[=<i>yes</i>|<i>no</i>|<i>foldcase</i>]</p>
1338 <p style="margin-left:18%;">Indicates whether the tag file
1339 should be sorted on the tag name (default is <i>yes</i>).
1340 Note that the original <b>vi</b>(1) required sorted tags.
1341 The <i>foldcase</i> value specifies case insensitive (or
1342 case-folded) sorting. Fast binary searches of tag files
1343 sorted with case-folding will require special support from
1344 tools using tag files, such as that found in the ctags
1345 readtags library, or Vim version 6.2 or higher (using
1346 &quot;set ignorecase&quot;). This option must appear before
1347 the first file name. [Ignored in etags mode]</p>
1350 <p style="margin-left:11%;"><b>&minus;&minus;tag&minus;relative</b>[=<i>yes</i>|<i>no</i>]</p>
1352 <p style="margin-left:18%;">Indicates that the file paths
1353 recorded in the tag file should be relative to the directory
1354 containing the tag file, rather than relative to the current
1355 directory, unless the files supplied on the command line are
1356 specified with absolute paths. This option must appear
1357 before the first file name. The default is <i>yes</i> when
1358 running in etags mode (see the <b>&minus;e</b> option),
1359 <i>no</i> otherwise.</p>
1362 <p style="margin-left:11%;"><b>&minus;&minus;totals</b>[=<i>yes</i>|<i>no</i>]</p>
1364 <p style="margin-left:18%;">Prints statistics about the
1365 source files read and the tag file written during the
1366 current invocation of <b>ctags</b>. This option is off by
1367 default. This option must appear before the first file
1368 name.</p>
1371 <p style="margin-left:11%;"><b>&minus;&minus;verbose</b>[=<i>yes</i>|<i>no</i>]</p>
1373 <p style="margin-left:18%;">Enable verbose mode. This
1374 prints out information on option processing and a brief
1375 message describing what action is being taken for each file
1376 considered by <b>ctags</b>. Normally, <b>ctags</b> does not
1377 read command line arguments until after options are read
1378 from the configuration files (see <b>FILES</b>, below) and
1379 the <b>CTAGS</b> environment variable. However, if this
1380 option is the first argument on the command line, it will
1381 take effect before any options are read from these sources.
1382 The default is <i>no</i>.</p>
1385 <p style="margin-left:11%;"><b>&minus;&minus;version</b></p>
1387 <p style="margin-left:18%;">Prints a version identifier for
1388 <b>ctags</b> to standard output, and then exits. This is
1389 guaranteed to always contain the string &quot;Exuberant
1390 Ctags&quot;.</p>
1392 <a name="OPERATIONAL DETAILS"></a>
1393 <h2>OPERATIONAL DETAILS</h2>
1396 <p style="margin-left:11%; margin-top: 1em">As <b>ctags</b>
1397 considers each file name in turn, it tries to determine the
1398 language of the file by applying the following three tests
1399 in order: if the file extension has been mapped to a
1400 language, if the file name matches a shell pattern mapped to
1401 a language, and finally if the file is executable and its
1402 first line specifies an interpreter using the Unix-style
1403 &quot;#!&quot; specification (if supported on the platform).
1404 If a language was identified, the file is opened and then
1405 the appropriate language parser is called to operate on the
1406 currently open file. The parser parses through the file and
1407 adds an entry to the tag file for each language object it is
1408 written to handle. See <b>TAG FILE FORMAT</b>, below, for
1409 details on these entries.</p>
1411 <p style="margin-left:11%; margin-top: 1em">This
1412 implementation of <b>ctags</b> imposes no formatting
1413 requirements on C code as do legacy implementations. Older
1414 implementations of ctags tended to rely upon certain
1415 formatting assumptions in order to help it resolve coding
1416 dilemmas caused by preprocessor conditionals.</p>
1418 <p style="margin-left:11%; margin-top: 1em">In general,
1419 <b>ctags</b> tries to be smart about conditional
1420 preprocessor directives. If a preprocessor conditional is
1421 encountered within a statement which defines a tag,
1422 <b>ctags</b> follows only the first branch of that
1423 conditional (except in the special case of &quot;#if
1424 0&quot;, in which case it follows only the last branch). The
1425 reason for this is that failing to pursue only one branch
1426 can result in ambiguous syntax, as in the following
1427 example:</p>
1429 <p style="margin-left:22%; margin-top: 1em">#ifdef
1430 TWO_ALTERNATIVES <br>
1431 struct { <br>
1432 #else <br>
1433 union { <br>
1434 #endif</p>
1436 <p style="margin-left:28%;">short a; <br>
1437 long b;</p>
1439 <p style="margin-left:22%;">}</p>
1441 <p style="margin-left:11%; margin-top: 1em">Both branches
1442 cannot be followed, or braces become unbalanced and
1443 <b>ctags</b> would be unable to make sense of the
1444 syntax.</p>
1446 <p style="margin-left:11%; margin-top: 1em">If the
1447 application of this heuristic fails to properly parse a
1448 file, generally due to complicated and inconsistent pairing
1449 within the conditionals, <b>ctags</b> will retry the file
1450 using a different heuristic which does not selectively
1451 follow conditional preprocessor branches, but instead falls
1452 back to relying upon a closing brace (&quot;}&quot;) in
1453 column 1 as indicating the end of a block once any brace
1454 imbalance results from following a #if conditional
1455 branch.</p>
1457 <p style="margin-left:11%; margin-top: 1em"><b>Ctags</b>
1458 will also try to specially handle arguments lists enclosed
1459 in double sets of parentheses in order to accept the
1460 following conditional construct:</p>
1462 <p style="margin-left:22%; margin-top: 1em">extern void foo
1463 __ARGS((int one, char two));</p>
1465 <p style="margin-left:11%; margin-top: 1em">Any name
1466 immediately preceding the &quot;((&quot; will be
1467 automatically ignored and the previous name will be
1468 used.</p>
1470 <p style="margin-left:11%; margin-top: 1em">C++ operator
1471 definitions are specially handled. In order for consistency
1472 with all types of operators (overloaded and conversion), the
1473 operator name in the tag file will always be preceded by the
1474 string &quot;operator &quot; (i.e. even if the actual
1475 operator definition was written as
1476 &quot;operator&lt;&lt;&quot;).</p>
1478 <p style="margin-left:11%; margin-top: 1em">After creating
1479 or appending to the tag file, it is sorted by the tag name,
1480 removing identical tag lines.</p>
1482 <a name="TAG FILE FORMAT"></a>
1483 <h2>TAG FILE FORMAT</h2>
1486 <p style="margin-left:11%; margin-top: 1em">When not
1487 running in etags mode, each entry in the tag file consists
1488 of a separate line, each looking like this in the most
1489 general case:</p>
1492 <p style="margin-left:12%; margin-top: 1em">tag_name&lt;TAB&gt;file_name&lt;TAB&gt;ex_cmd;&quot;&lt;TAB&gt;extension_fields</p>
1494 <p style="margin-left:11%; margin-top: 1em">The fields and
1495 separators of these lines are specified as follows:</p>
1497 <table width="100%" border=0 rules="none" frame="void"
1498 cellspacing="0" cellpadding="0">
1499 <tr valign="top" align="left">
1500 <td width="17%"></td>
1501 <td width="3%">
1504 <p style="margin-top: 1em" valign="top">1.</p></td>
1505 <td width="3%"></td>
1506 <td width="77%">
1509 <p style="margin-top: 1em" valign="top">tag name</p></td>
1510 <tr valign="top" align="left">
1511 <td width="17%"></td>
1512 <td width="3%">
1515 <p valign="top">2.</p></td>
1516 <td width="3%"></td>
1517 <td width="77%">
1520 <p valign="top">single tab character</p></td>
1521 <tr valign="top" align="left">
1522 <td width="17%"></td>
1523 <td width="3%">
1526 <p valign="top">3.</p></td>
1527 <td width="3%"></td>
1528 <td width="77%">
1531 <p valign="top">name of the file in which the object
1532 associated with the tag is located</p></td>
1533 <tr valign="top" align="left">
1534 <td width="17%"></td>
1535 <td width="3%">
1538 <p valign="top">4.</p></td>
1539 <td width="3%"></td>
1540 <td width="77%">
1543 <p valign="top">single tab character</p></td>
1544 <tr valign="top" align="left">
1545 <td width="17%"></td>
1546 <td width="3%">
1549 <p valign="top">5.</p></td>
1550 <td width="3%"></td>
1551 <td width="77%">
1554 <p valign="top">EX command used to locate the tag within
1555 the file; generally a search pattern (either /pattern/ or
1556 ?pattern?) or line number (see <b>&minus;&minus;excmd</b>).
1557 Tag file format 2 (see <b>&minus;&minus;format</b>) extends
1558 this EX command under certain circumstances to include a set
1559 of extension fields (described below) embedded in an EX
1560 comment immediately appended to the EX command, which leaves
1561 it backward-compatible with original <b>vi</b>(1)
1562 implementations.</p> </td>
1563 </table>
1565 <p style="margin-left:11%; margin-top: 1em">A few special
1566 tags are written into the tag file for internal purposes.
1567 These tags are composed in such a way that they always sort
1568 to the top of the file. Therefore, the first two characters
1569 of these tags are used a magic number to detect a tag file
1570 for purposes of determining whether a valid tag file is
1571 being overwritten rather than a source file.</p>
1573 <p style="margin-left:11%; margin-top: 1em">Note that the
1574 name of each source file will be recorded in the tag file
1575 exactly as it appears on the command line. Therefore, if the
1576 path you specified on the command line was relative to the
1577 current directory, then it will be recorded in that same
1578 manner in the tag file. See, however, the
1579 <b>&minus;&minus;tag&minus;relative</b> option for how this
1580 behavior can be modified.</p>
1582 <p style="margin-left:11%; margin-top: 1em">Extension
1583 fields are tab-separated key-value pairs appended to the end
1584 of the EX command as a comment, as described above. These
1585 key value pairs appear in the general form
1586 &quot;<i>key</i>:<i>value</i>&quot;. Their presence in the
1587 lines of the tag file are controlled by the
1588 <b>&minus;&minus;fields</b> option. The possible keys and
1589 the meaning of their values are as follows:</p>
1591 <table width="100%" border=0 rules="none" frame="void"
1592 cellspacing="0" cellpadding="0">
1593 <tr valign="top" align="left">
1594 <td width="11%"></td>
1595 <td width="9%">
1598 <p style="margin-top: 1em" valign="top"><i>access</i></p></td>
1599 <td width="9%"></td>
1600 <td width="71%">
1603 <p style="margin-top: 1em" valign="top">Indicates the
1604 visibility of this class member, where <i>value</i> is
1605 specific to the language.</p></td>
1606 <tr valign="top" align="left">
1607 <td width="11%"></td>
1608 <td width="9%">
1611 <p><i>file</i></p></td>
1612 <td width="9%"></td>
1613 <td width="71%">
1616 <p>Indicates that the tag has file-limited visibility. This
1617 key has no corresponding value.</p></td>
1618 <tr valign="top" align="left">
1619 <td width="11%"></td>
1620 <td width="9%">
1623 <p><i>kind</i></p></td>
1624 <td width="9%"></td>
1625 <td width="71%">
1628 <p>Indicates the type, or kind, of tag. Its value is either
1629 one of the corresponding one-letter flags described under
1630 the various <b>&minus;&minus;&lt;LANG&gt;&minus;kinds</b>
1631 options above, or a full name. It is permitted (and is, in
1632 fact, the default) for the key portion of this field to be
1633 omitted. The optional behaviors are controlled with the
1634 <b>&minus;&minus;fields</b> option.</p></td>
1635 </table>
1637 <p style="margin-left:11%;"><i>implementation</i></p>
1639 <p style="margin-left:29%;">When present, this indicates a
1640 limited implementation (abstract vs. concrete) of a routine
1641 or class, where <i>value</i> is specific to the language
1642 (&quot;virtual&quot; or &quot;pure virtual&quot; for C++;
1643 &quot;abstract&quot; for Java).</p>
1645 <table width="100%" border=0 rules="none" frame="void"
1646 cellspacing="0" cellpadding="0">
1647 <tr valign="top" align="left">
1648 <td width="11%"></td>
1649 <td width="14%">
1653 <p style="margin-top: 1em" valign="top"><i>inherits</i></p> </td>
1654 <td width="4%"></td>
1655 <td width="71%">
1658 <p style="margin-top: 1em" valign="top">When present,
1659 <i>value</i>. is a comma-separated list of classes from
1660 which this class is derived (i.e. inherits from).</p></td>
1661 <tr valign="top" align="left">
1662 <td width="11%"></td>
1663 <td width="14%">
1666 <p><i>signature</i></p></td>
1667 <td width="4%"></td>
1668 <td width="71%">
1671 <p>When present, <i>value</i> is a language-dependent
1672 representation of the signature of a routine. A routine
1673 signature in its complete form specifies the return type of
1674 a routine and its formal argument list. This extension field
1675 is presently supported only for C-based languages and does
1676 not include the return type.</p></td>
1677 </table>
1679 <p style="margin-left:11%; margin-top: 1em">In addition,
1680 information on the scope of the tag definition may be
1681 available, with the key portion equal to some
1682 language-dependent construct name and its value the name
1683 declared for that construct in the program. This scope entry
1684 indicates the scope in which the tag was found. For example,
1685 a tag generated for a C structure member would have a scope
1686 looking like &quot;struct:myStruct&quot;.</p>
1688 <a name="HOW TO USE WITH VI"></a>
1689 <h2>HOW TO USE WITH VI</h2>
1692 <p style="margin-left:11%; margin-top: 1em">Vi will, by
1693 default, expect a tag file by the name &quot;tags&quot; in
1694 the current directory. Once the tag file is built, the
1695 following commands exercise the tag indexing feature:</p>
1697 <table width="100%" border=0 rules="none" frame="void"
1698 cellspacing="0" cellpadding="0">
1699 <tr valign="top" align="left">
1700 <td width="11%"></td>
1701 <td width="14%">
1704 <p style="margin-top: 1em" valign="top"><b>vi &minus;t
1705 tag</b></p> </td>
1706 <td width="4%"></td>
1707 <td width="71%">
1710 <p style="margin-top: 1em" valign="top">Start vi and
1711 position the cursor at the file and line where
1712 &quot;tag&quot; is defined.</p></td>
1713 <tr valign="top" align="left">
1714 <td width="11%"></td>
1715 <td width="14%">
1718 <p style="margin-top: 1em" valign="top"><b>:ta tag</b></p></td>
1719 <td width="4%"></td>
1720 <td width="71%">
1723 <p style="margin-top: 1em" valign="top">Find a tag.</p></td>
1724 <tr valign="top" align="left">
1725 <td width="11%"></td>
1726 <td width="14%">
1729 <p style="margin-top: 1em" valign="top"><b>Ctrl-]</b></p></td>
1730 <td width="4%"></td>
1731 <td width="71%">
1734 <p style="margin-top: 1em" valign="top">Find the tag under
1735 the cursor.</p></td>
1736 <tr valign="top" align="left">
1737 <td width="11%"></td>
1738 <td width="14%">
1741 <p style="margin-top: 1em" valign="top"><b>Ctrl-T</b></p></td>
1742 <td width="4%"></td>
1743 <td width="71%">
1746 <p style="margin-top: 1em" valign="top">Return to previous
1747 location before jump to tag (not widely implemented).</p></td>
1748 </table>
1750 <a name="HOW TO USE WITH GNU EMACS"></a>
1751 <h2>HOW TO USE WITH GNU EMACS</h2>
1754 <p style="margin-left:11%; margin-top: 1em">Emacs will, by
1755 default, expect a tag file by the name &quot;TAGS&quot; in
1756 the current directory. Once the tag file is built, the
1757 following commands exercise the tag indexing feature:
1758 <b><br>
1759 M-x visit&minus;tags&minus;table &lt;RET&gt; FILE
1760 &lt;RET&gt;</b></p>
1762 <p style="margin-left:26%;">Select the tag file,
1763 &quot;FILE&quot;, to use.</p>
1765 <p style="margin-left:11%;"><b>M-. [TAG]
1766 &lt;RET&gt;</b></p>
1768 <p style="margin-left:26%;">Find the first definition of
1769 TAG. The default tag is the identifier under the cursor.</p>
1771 <table width="100%" border=0 rules="none" frame="void"
1772 cellspacing="0" cellpadding="0">
1773 <tr valign="top" align="left">
1774 <td width="11%"></td>
1775 <td width="11%">
1778 <p style="margin-top: 1em" valign="top"><b>M-*</b></p></td>
1779 <td width="4%"></td>
1780 <td width="72%">
1783 <p style="margin-top: 1em" valign="top">Pop back to where
1784 you previously invoked &quot;M-.&quot;.</p></td>
1785 <td width="2%">
1786 </td>
1787 <tr valign="top" align="left">
1788 <td width="11%"></td>
1789 <td width="11%">
1792 <p style="margin-top: 1em" valign="top"><b>C-u M-.</b></p></td>
1793 <td width="4%"></td>
1794 <td width="72%">
1797 <p style="margin-top: 1em" valign="top">Find the next
1798 definition for the last tag.</p></td>
1799 <td width="2%">
1800 </td>
1801 </table>
1803 <p style="margin-left:11%; margin-top: 1em">For more
1804 commands, see the <i>Tags</i> topic in the Emacs info
1805 document.</p>
1807 <a name="HOW TO USE WITH NEDIT"></a>
1808 <h2>HOW TO USE WITH NEDIT</h2>
1811 <p style="margin-left:11%; margin-top: 1em">NEdit version
1812 5.1 and later can handle the new extended tag file format
1813 (see <b>&minus;&minus;format</b>). To make NEdit use the tag
1814 file, select &quot;File&minus;&gt;Load Tags File&quot;. To
1815 jump to the definition for a tag, highlight the word, the
1816 press Ctrl-D. NEdit 5.1 can can read multiple tag files from
1817 different directories. Setting the X resource nedit.tagFile
1818 to the name of a tag file instructs NEdit to automatically
1819 load that tag file at startup time.</p>
1821 <a name="CAVEATS"></a>
1822 <h2>CAVEATS</h2>
1825 <p style="margin-left:11%; margin-top: 1em">Because
1826 <b>ctags</b> is neither a preprocessor nor a compiler, use
1827 of preprocessor macros can fool <b>ctags</b> into either
1828 missing tags or improperly generating inappropriate tags.
1829 Although <b>ctags</b> has been designed to handle certain
1830 common cases, this is the single biggest cause of reported
1831 problems. In particular, the use of preprocessor constructs
1832 which alter the textual syntax of C can fool <b>ctags</b>.
1833 You can work around many such problems by using the
1834 <b>&minus;I</b> option.</p>
1836 <p style="margin-left:11%; margin-top: 1em">Note that since
1837 <b>ctags</b> generates patterns for locating tags (see the
1838 <b>&minus;&minus;excmd</b> option), it is entirely possible
1839 that the wrong line may be found by your editor if there
1840 exists another source line which is identical to the line
1841 containing the tag. The following example demonstrates this
1842 condition:</p>
1844 <p style="margin-left:22%; margin-top: 1em">int
1845 variable;</p>
1847 <p style="margin-left:22%; margin-top: 1em">/* ... */ <br>
1848 void foo(variable) <br>
1849 int variable; <br>
1850 {</p>
1852 <p style="margin-left:28%;">/* ... */</p>
1854 <p style="margin-left:22%;">}</p>
1856 <p style="margin-left:11%; margin-top: 1em">Depending upon
1857 which editor you use and where in the code you happen to be,
1858 it is possible that the search pattern may locate the local
1859 parameter declaration in foo() before it finds the actual
1860 global variable definition, since the lines (and therefore
1861 their search patterns are identical). This can be avoided by
1862 use of the <b>&minus;&minus;excmd</b>=<i>n</i> option.</p>
1864 <a name="BUGS"></a>
1865 <h2>BUGS</h2>
1868 <p style="margin-left:11%; margin-top: 1em"><b>Ctags</b>
1869 has more options than <b>ls</b>(1).</p>
1871 <p style="margin-left:11%; margin-top: 1em">When parsing a
1872 C++ member function definition (e.g.
1873 &quot;className::function&quot;), <b>ctags</b> cannot
1874 determine whether the scope specifier is a class name or a
1875 namespace specifier and always lists it as a class name in
1876 the scope portion of the extension fields. Also, if a C++
1877 function is defined outside of the class declaration (the
1878 usual case), the access specification (i.e. public,
1879 protected, or private) and implementation information (e.g.
1880 virtual, pure virtual) contained in the function declaration
1881 are not known when the tag is generated for the function
1882 definition. It will, however be available for prototypes
1883 (e.g <b>&minus;&minus;c++&minus;kinds</b>=<i>+p</i>).</p>
1885 <p style="margin-left:11%; margin-top: 1em">No qualified
1886 tags are generated for language objects inherited into a
1887 class.</p>
1889 <a name="ENVIRONMENT VARIABLES"></a>
1890 <h2>ENVIRONMENT VARIABLES</h2>
1893 <table width="100%" border=0 rules="none" frame="void"
1894 cellspacing="0" cellpadding="0">
1895 <tr valign="top" align="left">
1896 <td width="11%"></td>
1897 <td width="9%">
1900 <p style="margin-top: 1em" valign="top"><b>CTAGS</b></p></td>
1901 <td width="3%"></td>
1902 <td width="77%">
1905 <p style="margin-top: 1em" valign="top">If this environment
1906 variable exists, it will be expected to contain a set of
1907 default options which are read when <b>ctags</b> starts,
1908 after the configuration files listed in <b>FILES</b>, below,
1909 are read, but before any command line options are read.
1910 Options appearing on the command line will override options
1911 specified in this variable. Only options will be read from
1912 this variable. Note that all white space in this variable is
1913 considered a separator, making it impossible to pass an
1914 option parameter containing an embedded space. If this is a
1915 problem, use a configuration file instead.</p></td>
1916 <tr valign="top" align="left">
1917 <td width="11%"></td>
1918 <td width="9%">
1921 <p><b>ETAGS</b></p></td>
1922 <td width="3%"></td>
1923 <td width="77%">
1926 <p>Similar to the <b>CTAGS</b> variable above, this
1927 variable, if found, will be read when <b>etags</b> starts.
1928 If this variable is not found, <b>etags</b> will try to use
1929 <b>CTAGS</b> instead.</p></td>
1930 <tr valign="top" align="left">
1931 <td width="11%"></td>
1932 <td width="9%">
1935 <p><b>TMPDIR</b></p></td>
1936 <td width="3%"></td>
1937 <td width="77%">
1940 <p>On Unix-like hosts where mkstemp() is available, the
1941 value of this variable specifies the directory in which to
1942 place temporary files. This can be useful if the size of a
1943 temporary file becomes too large to fit on the partition
1944 holding the default temporary directory defined at
1945 compilation time. <b>ctags</b> creates temporary files only
1946 if either (1) an emacs-style tag file is being generated,
1947 (2) the tag file is being sent to standard output, or (3)
1948 the program was compiled to use an internal sort algorithm
1949 to sort the tag files instead of the the sort utility of the
1950 operating system. If the sort utility of the operating
1951 system is being used, it will generally observe this
1952 variable also. Note that if <b>ctags</b> is setuid, the
1953 value of TMPDIR will be ignored.</p></td>
1954 </table>
1956 <a name="FILES"></a>
1957 <h2>FILES</h2>
1960 <p style="margin-left:11%; margin-top: 1em"><i>/ctags.cnf
1961 (on MSDOS, MSWindows only) <br>
1962 /etc/ctags.conf <br>
1963 /usr/local/etc/ctags.conf <br>
1964 $HOME/.ctags <br>
1965 $HOME/ctags.cnf (on MSDOS, MSWindows only) <br>
1966 .ctags <br>
1967 ctags.cnf (on MSDOS, MSWindows only)</i></p>
1969 <p style="margin-left:22%;">If any of these configuration
1970 files exist, each will be expected to contain a set of
1971 default options which are read in the order listed when
1972 <b>ctags</b> starts, but before the <b>CTAGS</b> environment
1973 variable is read or any command line options are read. This
1974 makes it possible to set up site-wide, personal or
1975 project-level defaults. It is possible to compile
1976 <b>ctags</b> to read an additional configuration file before
1977 any of those shown above, which will be indicated if the
1978 output produced by the <b>&minus;&minus;version</b> option
1979 lists the &quot;custom-conf&quot; feature. Options appearing
1980 in the <b>CTAGS</b> environment variable or on the command
1981 line will override options specified in these files. Only
1982 options will be read from these files. Note that the option
1983 files are read in line-oriented mode in which spaces are
1984 significant (since shell quoting is not possible). Each line
1985 of the file is read as one command line parameter (as if it
1986 were quoted with single quotes). Therefore, use new lines to
1987 indicate separate command-line arguments.</p>
1989 <table width="100%" border=0 rules="none" frame="void"
1990 cellspacing="0" cellpadding="0">
1991 <tr valign="top" align="left">
1992 <td width="11%"></td>
1993 <td width="6%">
1996 <p style="margin-top: 1em" valign="top"><i>tags</i></p></td>
1997 <td width="5%"></td>
1998 <td width="58%">
2001 <p style="margin-top: 1em" valign="top">The default tag
2002 file created by <b>ctags</b>.</p></td>
2003 <td width="20%">
2004 </td>
2005 <tr valign="top" align="left">
2006 <td width="11%"></td>
2007 <td width="6%">
2010 <p style="margin-top: 1em" valign="top"><i>TAGS</i></p></td>
2011 <td width="5%"></td>
2012 <td width="58%">
2015 <p style="margin-top: 1em" valign="top">The default tag
2016 file created by <b>etags</b>.</p></td>
2017 <td width="20%">
2018 </td>
2019 </table>
2021 <a name="SEE ALSO"></a>
2022 <h2>SEE ALSO</h2>
2025 <p style="margin-left:11%; margin-top: 1em">The official
2026 Exuberant Ctags web site at:</p>
2029 <p style="margin-left:22%; margin-top: 1em">http://ctags.sourceforge.net</p>
2031 <p style="margin-left:11%; margin-top: 1em">Also
2032 <b>ex</b>(1), <b>vi</b>(1), <b>elvis</b>, or, better yet,
2033 <b>vim</b>, the official editor of <b>ctags</b>. For more
2034 information on <b>vim</b>, see the VIM Pages web site
2035 at:</p>
2038 <p style="margin-left:22%; margin-top: 1em">http://www.vim.org/</p>
2040 <a name="AUTHOR"></a>
2041 <h2>AUTHOR</h2>
2044 <p style="margin-left:11%; margin-top: 1em">Darren Hiebert
2045 &lt;dhiebert at users.sourceforge.net&gt; <br>
2046 http://DarrenHiebert.com/</p>
2048 <a name="MOTIVATION"></a>
2049 <h2>MOTIVATION</h2>
2052 <p style="margin-left:11%; margin-top: 1em">&quot;Think ye
2053 at all times of rendering some service to every member of
2054 the human race.&quot;</p>
2056 <p style="margin-left:11%; margin-top: 1em">&quot;All
2057 effort and exertion put forth by man from the fullness of
2058 his heart is worship, if it is prompted by the highest
2059 motives and the will to do service to humanity.&quot;</p>
2061 <p style="margin-left:22%; margin-top: 1em">&minus;&minus;
2062 From the Baha&rsquo;i Writings</p>
2064 <a name="CREDITS"></a>
2065 <h2>CREDITS</h2>
2068 <p style="margin-left:11%; margin-top: 1em">This version of
2069 <b>ctags</b> was originally derived from and inspired by the
2070 ctags program by Steve Kirkendall
2071 &lt;kirkenda@cs.pdx.edu&gt; that comes with the Elvis vi
2072 clone (though virtually none of the original code
2073 remains).</p>
2075 <p style="margin-left:11%; margin-top: 1em">Credit is also
2076 due Bram Moolenaar &lt;Bram@vim.org&gt;, the author of
2077 <b>vim</b>, who has devoted so much of his time and energy
2078 both to developing the editor as a service to others, and to
2079 helping the orphans of Uganda.</p>
2081 <p style="margin-left:11%; margin-top: 1em">The section
2082 entitled &quot;HOW TO USE WITH GNU EMACS&quot; was
2083 shamelessly stolen from the info page for GNU
2084 <b>etags</b>.</p>
2085 <hr>
2086 </body>
2087 </html>