CTAGS(1)CTAGS(1)NAMEctags - create a tags file
SYNOPSISctags [ -abdgmrstuvwx ][ -f infile ][ -o output ][ -n maxrefs ] files
...
DESCRIPTION
Ctags creates a file called tags from the specified C, Objective-C,
Yacc, Lex, Pascal, Fortran or Lisp source files. The tags file is a
sorted index giving the locations of object declarations in files, as
well as type information, cross references, etc. Objects include
functions, procedures, global variables, macros, structs, typedefs,
yacc tokens, methods, and classes. This information is used by
ptags(1), and by the editors ex and vi to quickly find object
declarations and trace calling relationships.
Each line in the tags file contains the object name, the file in which
it is declared, a location (regular expression or line number), the
type of the object (function, macro, typedef, struct, global, method,
class, null), the length of the object (in lines), a caller reference
list, and a callee reference list. Fields are separated by whitespace
(except for the address and the rest of the line, which are separated
by "; to fool vi(1)), and caller/callee lists are enclosed in braces.
Files whose names end in .c or .h are assumed to be C source files; .m
are assumed to be Objective-C source files; .l implies Lisp or Lex
source; .y implies Yacc source; Others are scanned for Pascal or
Fortran definitions; if none are found, C is assumed.
Tags for main are treated specially in C programs: the tag is named
Mfile, making ctags useful in directories with more than one main
program. The first main function found is also tagged simply as
``main.''
Multiple links to a file are only indexed once.
OPTIONS-a add references to the tags file (don't overwrite it).
-b use backward searching patterns (?...?, instead of the forward
/.../ default).
-d create index entries for duplicate declarations (duplicates are
ignored by default, except for Objective-C).
-f infile
read input file names from infile.
-g suppress tags for global variables.
-m suppress tags for parameterless #define macros.
-n maxrefs
limit the length of callee/caller reference lists to maxrefs (60
by default). Longer lists are truncated, with (etc) ending the
list.
-o write tags to the file output (tags by default).
-r suppress generation of caller/callee reference lists, and
printing of object lengths.
-s suppress tags for structs, unions, and enums
-t suppress tags for typedefs (Note: the sense of this is reversed
in older versions of ctags).
-u update the specified files; that is, delete all old references
in the tags file and append any new ones. (Note: simply
rebuilding the tags file is usually faster.)
-v write an index for vgrind(1) on the standard output. This
listing contains object name, file name, and page number (64
line pages are assumed). Output is sorted lexicographically, so
sort -f may be useful:
ctags-v files | sort -f > index
vgrind -x index
This option implies -g, -m, -r, -s, -t, and -x.
-w suppress warning diagnostics.
-x print a list containing object names, the line number and file
in which each is defined, and the text of that line on the
standard output. This is a simple index fit for humans. This
option implies -g, -m, -r, -s, and -t.
FILES
tags output tags file
SEE ALSOptags(1), ctree(1), ex(1), vi(1)AUTHOR
Ken Arnold; FORTRAN added by Jim Kleckner; Bill Joy added Pascal and -x
replacing cxref; C typedefs added by Ed Pelegri-Llopart; Ronen Barzel
and Michael Hawley added object type and length, global variable and
macro indexing, and callee/caller lists. Sam Leffler added yacc and
lex knowledge.
BUGS
Non-C languages are processed in an unsophisticated way: in particular,
Pascal and FORTRAN objects are crudely located; no attempt is made to
deal with Pascal block structure; global variables and Pascal types are
not tagged; and caller/callee references are not generated.
Does not handle C structs' having a separate name space; If a struct
shares a name with any other object, the struct declaration will not be
tagged.
Callee lists are generated in a shallow way; if a function references a
local variable or structure field which has the same name as a tagged
object, that object will be added to the function's callee list.
There's a hack to ignore duplicate global variables named "sccsid".
Does not know about #ifdefs.
The -g, -m, -r, -s and -t options should not necessarily be implied for
-v and -x; they are present for backward compatibility.
Aug 11, 1987 CTAGS(1)