SYNOPSIS

       etags [-aCDGImRVh] [-i file] [-l language]
       [-o tagfile] [-r regexp]
       [--append] [--no-defines] [--no-globals] [--include=file]
       [--ignore-indentation] [--language=language] [--members]
       [--output=tagfile] [--regex=regexp] [--no-regex]
       [--ignore-case-regex=regexp] [--help] [--version] file ...

       gnuctags [-aCdgImRVh] [-BtTuvwx] [-l language]
       [-o tagfile] [-r regexp]
       [--append] [--backward-search] [--cxref] [--defines]
       [--forward-search] [--globals] [--ignore-indentation]
       [--language=language] [--members] [--output=tagfile]
       [--regex=regexp] [--ignore-case-regex=regexp] [--typedefs]
       [--typedefs-and-c++] [--update] [--no-warn] [--help]
       [--version] file ...


DESCRIPTION

       The etags program is used to create a tag table file, in a
       format  understood  by  emacs(1);  the gnuctags program is
       used to create a similar table in a format  understood  by
       vi(1).  Both forms of the program understand the syntax of
       C, Objective C, C++, Java, Fortran,  Ada,  Cobol,  Erlang,
       LaTeX,  Emacs  Lisp/Common  Lisp, makefiles, Pascal, Perl,
       Postscript, Python, Prolog, Scheme and most assembler-like
       syntaxes.  Both forms read the files specified on the com­
       mand line, and write  a  tag  table  (defaults:  TAGS  for
       etags,  tags for gnuctags) in the current working directo­
       ry.  Files specified with  relative  file  names  will  be
       recorded  in the tag table with file names relative to the
       directory where the tag table  resides.   Files  specified
       with  absolute  file  names will be recorded with absolute
       file names.  The programs recognize the language  used  in
       an  input  file  based on its file name and contents.  The
       --language switch can be used to force parsing of the file
       names  following  the  switch  according to the given lan­
       guage, overriding guesses based on filename extensions.


OPTIONS

       Some options make sense only for the vi  style  tag  files
       produced  by gnuctags; etags does not recognize them.  The
       programs accept unambiguous abbreviations for long  option
       names.

       -a, --append
              Append  to  existing  tag file.  (For vi-format tag
              files, see also --update.)

       -B, --backward-search
              Tag files written in the format expected by vi con­
              tain regular expression search instructions; the -B
              option writes them  using  the  delimiter  `?',  to

       -D, --no-defines
              Do  not  create tag entries for C preprocessor con­
              stant definitions and  enum  constants.   This  may
              make  the  tags  file  much  smaller if many header
              files are tagged.  This is the default behavior for
              gnuctags.

       -g, --globals
              Create  tag entries for global variables in C, C++,
              Objective C, Java, and Perl.  This is  the  default
              behavior for etags.

       -G, --no-globals
              Do  not  tag  global variables.  Typically this re­
              duces the file size by one fourth.  This is the de­
              fault behavior for gnuctags.

       -i file, --include=file
              Include  a  note  in  the tag file indicating that,
              when searching for a tag, one should  also  consult
              the tags file file after checking the current file.
              This options is only accepted by etags.

       -I, --ignore-indentation
              Don't rely on indentation as much  as  we  normally
              do.   Currently,  this  means  not to assume that a
              closing brace in the  first  column  is  the  final
              brace  of  a  function or structure definition in C
              and C++.

       -l language, --language=language
              Parse the following files according  to  the  given
              language.  More than one such options may be inter­
              mixed with filenames.  Use --help to get a list  of
              the  available languages and their default filename
              extensions.  The `auto' language can be used to re­
              store  automatic detection of language based on the
              file name.  The `none' language may be used to dis­
              able   language  parsing  altogether;  only  regexp
              matching is done in this case (see the --regex  op­
              tion).

       -m, --members
              Create  tag  entries for variables that are members
              of structure-like constructs in C++,  Objective  C,
              Java.

       -M, --no-members
              Do  not  tag member variables.  This is the default
              behavior.

       --packages-only
              freely intermixed with filenames and the -R option.
              The regexps are cumulative, i.e. each  option  will
              add  to  the previous ones.  The regexps are of the
              form:
                   /tagregexp[/nameregexp]/

              where tagregexp is used to  match  the  lines  that
              must  be tagged.  It should not match useless char­
              acters.  If the match is such that more  characters
              than  needed  are unavoidably matched by tagregexp,
              it may be useful to add  a  nameregexp,  to  narrow
              down the tag scope.  gnuctags ignores regexps with­
              out a nameregexp.  The syntax  of  regexps  is  the
              same as in emacs.
              Here are some examples.  All the regexps are quoted
              to protect them from shell interpretation.

              Tag the DEFVAR macros in the emacs source files:
              --regex='/[ \t]*DEFVAR_[A-Z_ \t(]+"\([^"]+\)"'

              Tag VHDL files (this example is a single long line,
              broken here for formatting reasons):
              --language=none --regex='/[ \t]*\(ARCHITECTURE\|\
              CONFIGURATION\) +[^ ]* +OF/' --regex='/[ \t]*\
              \(ATTRIBUTE\|ENTITY\|FUNCTION\|PACKAGE\( BODY\)?\
              \|PROCEDURE\|PROCESS\|TYPE\)[ \t]+\([^ \t(]+\)/\3/'

              Tag TCL files (this last example shows the usage of
              a tagregexp):
              --lang=none --regex='/proc[ \t]+\([^ \t]+\)/\1/'

              A regexp can be preceded by {lang}, thus  restrict­
              ing  it  to  match  lines of files of the specified
              language.  Use etags --help to obtain a list of the
              recognised languages.  This feature is particularly
              useful inside regex files.  A regex  file  contains
              one  regex  per line.  Empty lines, and those lines
              beginning with space or tab are ignored.  Lines be­
              ginning  with @ are references to regex files whose
              name follows the @ sign.  Other lines  are  consid­
              ered   regular  expressions  like  those  following
              --regex.
              For example, the command
              etags --regex=@regex.file *.c
              reads the regexes contained in the file regex.file.

       -R, --no-regex
              Don't  do any more regexp matching on the following
              files.  May be freely intermixed with filenames and
              the --regex option.

       -t, --typedefs
              isting entries for the given files and then rewrit­
              ing the new entries at the end of  the  tags  file.
              It is often faster to simply rebuild the entire tag
              file than to use this.  Only gnuctags accepts  this
              option.

       -v, --vgrind
              Instead  of  generating a tag file, write index (in
              vgrind format) to standard output.   Only  gnuctags
              accepts this option.

       -w, --no-warn
              Suppress  warning messages about duplicate entries.
              The etags program does not check for duplicate  en­
              tries, so this option is not allowed with it.

       -x, --cxref
              Instead  of  generating  a  tag file, write a cross
              reference (in cxref  format)  to  standard  output.
              Only gnuctags accepts this option.

       -h, -H, --help
              Print usage information.

       -V, --version
              Print  the  current version of the program (same as
              the version of the emacs etags is shipped with).



SEE ALSO

       `emacs' entry in info; GNU Emacs Manual, Richard Stallman.
       ctags(1), cxref(1), emacs(1), gctags(1), vgrind(1), vi(1).



COPYING

       Copyright (c) 1999, 2001 Free Software Foundation, Inc.

       Permission is granted  to  make  and  distribute  verbatim
       copies  of this document provided the copyright notice and
       this permission notice are preserved on all copies.

       Permission is granted to copy and distribute modified ver­
       sions  of  this document under the conditions for verbatim
       copying, provided that the entire resulting  derived  work
       is  distributed  under  the  terms  of a permission notice
       identical to this one.

       Permission is granted to copy and distribute  translations
       of  this  document  into another language, under the above
       conditions for modified versions, except that this permis­
       sion notice may be stated in a translation approved by the
       Free Software Foundation.

Man(1) output converted with man2html