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

FreeBSD Manual Pages

  
 
  

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

NAME
       ctags --	create a tags file

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

DESCRIPTION
       The  ctags  utility  makes  a tags file for ex(1) from the specified C,
       Pascal, 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  de-
       fined,  and  a  search  pattern for the object definition, separated by
       white-space.  Using the tags file, ex(1)	can quickly locate  these  ob-
       ject  definitions.   Depending  upon the	options	provided to ctags, ob-
       jects 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.  If
	       tagsfile	is "-",	the tags will be written  to  standard	output
	       instead.

       -u      Update  the specified files in the tags file, that is, all ref-
	       erences to them are deleted, and	the new	values are appended to
	       the file.  This is ignored if the tags file does	not  exist  or
	       is  not a regular file (e.g.  -f- was used to write to standard
	       output).

	       Beware: this option is implemented in a	way  which  is	rather
	       slow; it	is usually faster to simply rebuild the	tags file.

       -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 out-
	       put  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  in-
	       dex.

       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  Pas-
       cal  or	Fortran	 routine  definitions, and, if not, are	searched for C
       style definitions.

       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.

FILES
       tags  default output tags file

EXIT STATUS
       The  ctags utility exits	with a value of	1 if an	error occurred,	0 oth-
       erwise.	Duplicate objects are not considered errors.

COMPATIBILITY
       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 default.

SEE ALSO
       ex(1), vi(1)

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

HISTORY
       The ctags utility appeared in 3.0BSD.

BUGS
       Recognition of functions, subroutines and procedures  for  Fortran  and
       Pascal  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	under-
       stand about Pascal types.

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

       The  ctags  utility relies on the input being well formed, and any syn-
       tactical	errors will completely confuse it.  It also finds  some	 legal
       syntax  confusing;  for	example, since it does not understand #ifdef's
       (incidentally, that is a	feature, not a bug), any code with  unbalanced
       braces  inside  #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	pattern.  The last line	 of  multiple  line  typedef's
       will similarly be noted.

FreeBSD	15.0			 May 23, 2023			      CTAGS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ctags&sektion=1&manpath=FreeBSD+15.0-RELEASE+and+Ports>

home | help