Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
CTAGS(1)		  BSD General Commands Manual		      CTAGS(1)

     ctags -- create a tags file

     ctags [-BFTaduwvx]	[-f tagsfile] file ...

     The ctags utility makes a tags file for ex(1) from	the specified C, Pas-
     cal, Fortran, yacc(1), lex(1), and	Lisp sources.  A tags file gives the
     locations of specified objects in a group of files.  Each line of the
     tags file contains	the object name, the file in which it is defined, and
     a search pattern for the object definition, separated by white-space.
     Using the tags file, ex(1)	can quickly locate these object	definitions.
     Depending upon the	options	provided to ctags, objects will	consist	of
     subroutines, typedefs, defines, structs, enums and	unions.

     The following options are available:

     -B	     Use backward searching patterns (?...?).

     -F	     Use forward searching patterns (/.../) (the default).

     -T	     Do	not create tags	for typedefs, structs, unions, and enums.

     -a	     Append to tags file.

     -d	     Create tags for #defines that do not take arguments; #defines
	     that take arguments are tagged automatically.

     -f	     Place the tag descriptions	in a file called tagsfile.  The	de-
	     fault behaviour is	to place them in a file	called tags.

     -u	     Update the	specified files	in the tags file, that is, all refer-
	     ences to them are deleted,	and the	new values are appended	to the
	     file.  (Beware: this option is implemented	in a way which is
	     rather slow; it is	usually	faster to simply rebuild the tags

     -v	     An	index of the form expected by vgrind(1)	is produced on the
	     standard output.  This listing contains the object	name, file
	     name, and page number (assuming 64	line pages).  Since the	output
	     will be sorted into lexicographic order, it may be	desired	to run
	     the output	through	sort(1).  Sample use:

		   ctags -v files | sort -f > index
		   vgrind -x index

     -w	     Suppress warning diagnostics.

     -x	     ctags produces a list of object names, the	line number and	file
	     name on which each	is defined, as well as the text	of that	line
	     and prints	this on	the standard output.  This is a	simple index
	     which can be printed out as an off-line readable function index.

     Files whose names end in .c or .h are assumed to be C source files	and
     are searched for C	style routine and macro	definitions.  Files whose
     names end in .y are assumed to be yacc(1) source files.  Files whose
     names end in .l are assumed to be Lisp files if their first non-blank
     character is `;', `(', or `[', otherwise, they are	treated	as lex(1)
     files.  Other files are first examined to see if they contain any Pascal
     or	Fortran	routine	definitions, and, if not, are searched for C style

     The tag "main" is treated specially in C programs.	 The tag formed	is
     created by	prepending `M' to the name of the file,	with the trailing .c
     and any leading pathname components removed.  This	makes use of ctags
     practical in directories with more	than one program.

     The yacc(1) and lex(1) files each have a special tag.  "yyparse" is the
     start of the second section of the	yacc(1)	file, and "yylex" is the start
     of	the second section of the lex(1) file.

     tags  default output tags file

     The ctags utility exits with a value of 1 if an error occurred, 0 other-
     wise.  Duplicate objects are not considered errors.

     The -t option is a	no-op for compatibility	with previous versions of
     ctags that	did not	create tags for	typedefs, enums, structs and unions by

     ex(1), vi(1)

     The ctags utility conforms	to IEEE	Std 1003.1-2001	("POSIX.1").

     The ctags utility appeared	in 3.0BSD.

     Recognition of functions, subroutines and procedures for Fortran and Pas-
     cal is done in a very simpleminded	way.  No attempt is made to deal with
     block structure; if you have two Pascal procedures	in different blocks
     with the same name	you lose.  The ctags utility does not understand about
     Pascal types.

     The method	of deciding whether to look for	C, Pascal or Fortran functions
     is	a hack.

     The ctags utility relies on the input being well formed, and any syntac-
     tical errors will completely confuse it.  It also finds some legal	syntax
     confusing;	for example, since it does not understand #ifdef's (inciden-
     tally, that is a feature, not a bug), any code with unbalanced braces in-
     side #ifdef's will	cause it to become somewhat disoriented.  In a similar
     fashion, multiple line changes within a definition	will cause it to enter
     the last line of the object, rather than the first, as the	searching pat-
     tern.  The	last line of multiple line typedef's will similarly be noted.

BSD				 June 6, 1993				   BSD


Want to link to this manual page? Use this URL:

home | help