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