* lib-src/etags.c (Lisp_functions): Skip (defvar foo) declarations
[bpt/emacs.git] / doc / man / etags.1
CommitLineData
f7e18da2 1.\" See section COPYING for copyright and redistribution information.
cbe77461
GM
2.TH etags 1 "23nov2001" "GNU Tools" "GNU Tools"
3.de BP
4.sp
5.ti -.2i
6\(**
7..
8
9.SH NAME
10etags, ctags \- generate tag file for Emacs, vi
11.SH SYNOPSIS
12.hy 0
13.na
14\fBetags\fP [\|\-aCDGIRVh\|] [\|\-i \fIfile\fP\|] [\|\-l \fIlanguage\fP\|]
15.if n .br
16[\|\-o \fItagfile\fP\|] [\|\-r \fIregexp\fP\|]
17[\|\-\-parse\-stdin=\fIfile\fP\|]
18.br
228a8cfd 19[\|\-\-append\|] [\|\-\-no\-defines\|] [\|\-\-globals\|]
cbe77461
GM
20[\|\-\-no\-globals\|] [\|\-\-include=\fIfile\fP\|]
21[\|\-\-ignore\-indentation\|] [\|\-\-language=\fIlanguage\fP\|]
228a8cfd 22[\|\-\-members\|] [\|\-\-no\-members\|] [\|\-\-output=\fItagfile\fP\|]
cbe77461
GM
23[\|\-\-regex=\fIregexp\fP\|] [\|\-\-no\-regex\|]
24[\|\-\-help\|] [\|\-\-version\|]
25\fIfile\fP .\|.\|.
26
27\fBctags\fP [\|\-aCdgIRVh\|] [\|\-BtTuvwx\|] [\|\-l \fIlanguage\fP\|]
28.if n .br
29[\|\-o \fItagfile\fP\|] [\|\-r \fIregexp\fP\|]
30[\|\-\-parse\-stdin=\fIfile\fP\|]
31.br
32[\|\-\-append\|] [\|\-\-backward\-search\|]
228a8cfd
FP
33[\|\-\-cxref\|] [\|\-\-no\-defines\|]
34[\|\-\-globals\|] [\|\-\-no\-globals\|] [\|\-\-ignore\-indentation\|]
35[\|\-\-language=\fIlanguage\fP\|] [\|\-\-members\|] [\|\-\-no\-members\|]
cbe77461 36[\|\-\-output=\fItagfile\fP\|] [\|\-\-regex=\fIregexp\fP\|]
cbe77461
GM
37[\|\-\-update\|]
38[\|\-\-help\|] [\|\-\-version\|]
39\fIfile\fP .\|.\|.
40.ad b
41.hy 1
42.SH DESCRIPTION
43The \|\fBetags\fP\| program is used to create a tag table file, in a format
44understood by
45.BR emacs ( 1 )\c
46\&; the \|\fBctags\fP\| program is used to create a similar table in a
47format understood by
48.BR vi ( 1 )\c
49\&. Both forms of the program understand
228a8cfd
FP
50the syntax of C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang,
51Forth, HTML, LaTeX, Emacs Lisp/Common Lisp, Lua, Makefile, Pascal, Perl,
7877f373 52PHP, PostScript, Python, Prolog, Scheme and
cbe77461
GM
53most assembler\-like syntaxes.
54Both forms read the files specified on the command line, and write a tag
55table (defaults: \fBTAGS\fP for \fBetags\fP, \fBtags\fP for
56\fBctags\fP) in the current working directory.
57Files specified with relative file names will be recorded in the tag
58table with file names relative to the directory where the tag table
ba3cfe53
FP
59resides. If the tag table is in /dev or is the standard output,
60however, the file names are made relative to the working directory.
61Files specified with absolute file names will be recorded
cbe77461
GM
62with absolute file names. Files generated from a source file\-\-like
63a C file generated from a source Cweb file\-\-will be recorded with
64the name of the source file.
4c964351 65Compressed files are supported using gzip, bzip2, and xz.
cbe77461
GM
66The programs recognize the language used in an input file based on its
67file name and contents. The \fB\-\-language\fP switch can be used to force
68parsing of the file names following the switch according to the given
69language, overriding guesses based on filename extensions.
70.SH OPTIONS
71Some options make sense only for the \fBvi\fP style tag files produced
72by ctags;
73\fBetags\fP does not recognize them.
74The programs accept unambiguous abbreviations for long option names.
75.TP
76.B \-a, \-\-append
77Append to existing tag file. (For \fBvi\fP-format tag files, see also
78\fB\-\-update\fP.)
79.TP
80.B \-B, \-\-backward\-search
81Tag files written in the format expected by \fBvi\fP contain regular
82expression search instructions; the \fB\-B\fP option writes them using
83the delimiter `\|\fB?\fP\|', to search \fIbackwards\fP through files.
84The default is to use the delimiter `\|\fB/\fP\|', to search \fIforwards\fP
85through files.
86Only \fBctags\fP accepts this option.
87.TP
88.B \-\-declarations
89In C and derived languages, create tags for function declarations,
90and create tags for extern variables unless \-\-no\-globals is used.
1cbaa705 91In Lisp, create tags for (defvar foo) declarations.
cbe77461 92.TP
cbe77461
GM
93.B \-D, \-\-no\-defines
94Do not create tag entries for C preprocessor constant definitions
95and enum constants.
96This may make the tags file much smaller if many header files are tagged.
cbe77461 97.TP
228a8cfd
FP
98.B \-\-globals
99Create tag entries for global variables in Perl and Makefile. This is
100the default in C and derived languages.
101.TP
cbe77461 102.B \-\-no\-globals
228a8cfd
FP
103Do not tag global variables in C and derived languages. Typically this
104reduces the file size by one fourth.
cbe77461
GM
105.TP
106\fB\-i\fP \fIfile\fP, \fB\-\-include=\fIfile\fP
107Include a note in the tag file indicating that, when searching for a
108tag, one should also consult the tags file \fIfile\fP after checking the
109current file. Only \fBetags\fP accepts this option.
110.TP
111.B \-I, \-\-ignore\-indentation
112Don't rely on indentation as much as we normally do. Currently, this
113means not to assume that a closing brace in the first column is the
114final brace of a function or structure definition in C and C++.
115.TP
116\fB\-l\fP \fIlanguage\fP, \fB\-\-language=\fIlanguage\fP
117Parse the following files according to the given language. More than
118one such options may be intermixed with filenames. Use \fB\-\-help\fP
119to get a list of the available languages and their default filename
120extensions. The `auto' language can be used to restore automatic
121detection of language based on the file name. The `none'
122language may be used to disable language parsing altogether; only
123regexp matching is done in this case (see the \fB\-\-regex\fP option).
124.TP
125.B \-\-members
126Create tag entries for variables that are members of structure-like
228a8cfd 127constructs in PHP. This is the default for C and derived languages.
cbe77461
GM
128.TP
129.B \-\-no\-members
961bdc71 130Do not tag member variables.
cbe77461
GM
131.TP
132.B \-\-packages\-only
133Only tag packages in Ada files.
134.TP
135\fB\-\-parse\-stdin=\fIfile\fP
136May be used (only once) in place of a file name on the command line.
137\fBetags\fP will read from standard input and mark the produced tags
138as belonging to the file \fBFILE\fP.
139.TP
140\fB\-o\fP \fItagfile\fP, \fB\-\-output=\fItagfile\fP
ba3cfe53
FP
141Explicit name of file for tag table; for \fBetags\fP only, a file name
142of \- means standard output; overrides default \fBTAGS\fP or \fBtags\fP.
143(But ignored with \fB\-v\fP or \fB\-x\fP.)
cbe77461
GM
144.TP
145\fB\-r\fP \fIregexp\fP, \fB\-\-regex=\fIregexp\fP
146
147Make tags based on regexp matching for the files following this option,
148in addition to the tags made with the standard parsing based on
149language. May be freely intermixed with filenames and the \fB\-R\fP
150option. The regexps are cumulative, i.e. each such option will add to
151the previous ones. The regexps are of one of the forms:
152.br
153 [\fB{\fP\fIlanguage\fP\fB}\fP]\fB/\fP\fItagregexp/\fP[\fInameregexp\fP\fB/\fP]\fImodifiers\fP
154.br
155 \fB@\fP\fIregexfile\fP
156.br
157
158where \fItagregexp\fP is used to match the tag. It should not match
159useless characters. If the match is such that more characters than
160needed are unavoidably matched by \fItagregexp\fP, it may be useful to
161add a \fInameregexp\fP, to narrow down the tag scope. \fBctags\fP
162ignores regexps without a \fInameregexp\fP. The syntax of regexps is
163the same as in emacs. The following character escape sequences are
164supported: \\a, \\b, \\d, \\e, \\f, \\n, \\r, \\t, \\v, which
165respectively stand for the ASCII characters BEL, BS, DEL, ESC, FF, NL,
166CR, TAB, VT.
167.br
168The \fImodifiers\fP are a sequence of 0 or more characters among
169\fIi\fP, which means to ignore case when matching; \fIm\fP, which means
170that the \fItagregexp\fP will be matched against the whole file contents
171at once, rather than line by line, and the matching sequence can match
172multiple lines; and \fIs\fP, which implies \fIm\fP and means that the
173dot character in \fItagregexp\fP matches the newline char as well.
174.br
175The separator, which is \fB/\fP in the examples, can be any character
176different from space, tab, braces and \fB@\fP. If the separator
177character is needed inside the regular expression, it must be quoted
178by preceding it with \fB\\\fP.
179.br
180The optional \fB{\fP\fIlanguage\fP\fB}\fP prefix means that the tag
181should be
182created only for files of language \fIlanguage\fP, and ignored
183otherwise. This is particularly useful when storing many predefined
184regexps in a file.
185.br
186In its second form, \fIregexfile\fP is the name of a file that contains
187a number of arguments to the \fI\-\-regex\=\fP option,
188one per line. Lines beginning with a space or tab are assumed
189to be comments, and ignored.
190
191.br
192Here are some examples. All the regexps are quoted to protect them
193from shell interpretation.
194.br
195
196Tag the DEFVAR macros in the emacs source files:
197.br
198\fI\-\-regex\='/[ \\t]*DEFVAR_[A-Z_ \\t(]+"\\([^"]+\\)"/'\fP
199.\"" This comment is to avoid confusion to Emacs syntax highlighting
200.br
201
202Tag VHDL files (this example is a single long line, broken here for
203formatting reasons):
204.br
205\fI\-\-language\=none\ \-\-regex='/[\ \\t]*\\(ARCHITECTURE\\|\\
206CONFIGURATION\\)\ +[^\ ]*\ +OF/'\ \-\-regex\='/[\ \\t]*\\
207\\(ATTRIBUTE\\|ENTITY\\|FUNCTION\\|PACKAGE\\(\ BODY\\)?\\
208\\|PROCEDURE\\|PROCESS\\|TYPE\\)[\ \\t]+\\([^\ \\t(]+\\)/\\3/'\fP
209.br
210
211Tag TCL files (this last example shows the usage of a \fItagregexp\fP):
212.br
213\fI\-\-lang\=none \-\-regex\='/proc[\ \\t]+\\([^\ \\t]+\\)/\\1/'\fP
214
215.br
216A regexp can be preceded by {\fIlang\fP}, thus restricting it to match
217lines of files of the specified language. Use \fBetags \-\-help\fP to obtain
5b64eab9 218a list of the recognized languages. This feature is particularly useful inside
cbe77461
GM
219\fBregex files\fP. A regex file contains one regex per line. Empty lines,
220and those lines beginning with space or tab are ignored. Lines beginning
221with @ are references to regex files whose name follows the @ sign. Other
222lines are considered regular expressions like those following \fB\-\-regex\fP.
223.br
224For example, the command
225.br
226\fIetags \-\-regex=@regex.file *.c\fP
227.br
228reads the regexes contained in the file regex.file.
229.TP
230.B \-R, \-\-no\-regex
231Don't do any more regexp matching on the following files. May be
232freely intermixed with filenames and the \fB\-\-regex\fP option.
233.TP
cbe77461
GM
234.B \-u, \-\-update
235Update tag entries for \fIfiles\fP specified on command line, leaving
236tag entries for other files in place. Currently, this is implemented
237by deleting the existing entries for the given files and then
238rewriting the new entries at the end of the tags file. It is often
239faster to simply rebuild the entire tag file than to use this.
240Only \fBctags\fP accepts this option.
241.TP
242.B \-v, \-\-vgrind
243Instead of generating a tag file, write index (in \fBvgrind\fP format)
244to standard output. Only \fBctags\fP accepts this option.
245.TP
246.B \-x, \-\-cxref
247Instead of generating a tag file, write a cross reference (in
248\fBcxref\fP format) to standard output. Only \fBctags\fP accepts this option.
249.TP
250.B \-h, \-H, \-\-help
251Print usage information. Followed by one or more \-\-language=LANG
252prints detailed information about how tags are created for LANG.
253.TP
254.B \-V, \-\-version
255Print the current version of the program (same as the version of the
256emacs \fBetags\fP is shipped with).
257
258.SH "SEE ALSO"
259`\|\fBemacs\fP\|' entry in \fBinfo\fP; \fIGNU Emacs Manual\fP, Richard
260Stallman.
261.br
262.BR cxref ( 1 ),
263.BR emacs ( 1 ),
264.BR vgrind ( 1 ),
265.BR vi ( 1 ).
266
267.SH COPYING
268Copyright
269.if t \(co
f7e18da2 270.if n (C)
7497ef13 2711992, 1999, 2001-2012 Free Software Foundation, Inc.
cbe77461
GM
272.PP
273Permission is granted to make and distribute verbatim copies of this
274document provided the copyright notice and this permission notice are
275preserved on all copies.
276.PP
277Permission is granted to copy and distribute modified versions of
278this document under the conditions for verbatim copying, provided that
279the entire resulting derived work is distributed under the terms of
280a permission notice identical to this one.
281.PP
282Permission is granted to copy and distribute translations of this
283document into another language, under the above conditions for
284modified versions, except that this permission notice may be stated
285in a translation approved by the Free Software Foundation.
286