Next: Create Tags Table, Up: Tags
Here is how tag syntax is defined for the most popular languages:
struct
, union
and enum
.
#define
macro definitions and enum
constants are also
tags, unless you specify ‘--no-defines’ when making the tags table.
Similarly, global variables are tags, unless you specify
‘--no-globals’. Use of ‘--no-globals’ and ‘--no-defines’
can make the tags table file much smaller.
You can tag function declarations and external variables in addition
to function definitions by giving the ‘--declarations’ option to
etags
. You can tag struct members with the ‘--members’
option.
operator
definitions have
tag names like ‘operator+’.
interface
, extends
and implements
constructs.
Tags for variables and functions in classes are named
‘class.variable’ and ‘class.function’.
\chapter
,
\section
, \subsection
, \subsubsection
,
\eqno
, \label
, \ref
, \cite
,
\bibitem
, \part
, \appendix
, \entry
,
\index
, \def
, \newcommand
, \renewcommand
,
\newenvironment
or \renewenvironment
is a tag.
Other commands can make tags as well, if you specify them in the
environment variable TEXTAGS before invoking etags
. The
value of this environment variable should be a colon-separated list of
command names. For example,
TEXTAGS="mycommand:myothercommand" export TEXTAGS
specifies (using Bourne shell syntax) that the commands ‘\mycommand’ and ‘\myothercommand’ also define tags.
defun
, any variable
defined with defvar
or defconst
, and in general the first
argument of any expression that starts with ‘(def’ in column zero is
a tag.
def
or with a
construct whose name starts with ‘def’. They also include variables
set with set!
at top level in the file.
Several other languages are also supported:
In Ada, the same name can be used for different kinds of entity (e.g., for a procedure and for a function). Also, for things like packages, procedures and functions, there is the spec (i.e. the interface) and the body (i.e. the implementation). To make it easier to pick the definition you want, Ada tag name have suffixes indicating the type of entity:
Thus, M-x find-tag <RET> bidule/b <RET> will go
directly to the body of the package bidule
, while M-x
find-tag <RET> bidule <RET> will just search for any tag
bidule
.
title
and the h1
,
h2
, h3
headers. Also, tags are name=
in anchors
and all occurrences of id=
.
package
, sub
, my
and local
keywords. Use ‘--globals’ if you want to tag global variables.
Tags for subroutines are named ‘package::sub’. The
name for subroutines defined in the default package is
‘main::sub’.
def
or class
at the beginning of a line
generate a tag.
You can also generate tags based on regexp matching (see Etags Regexps) to handle other formats and languages.