Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




Next: , Up: Tags

33.2.1 Source File Tag Syntax

Here is how tag syntax is defined for the most popular languages:

  • In C code, any C function or typedef is a tag, and so are definitions of 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.

  • In C++ code, in addition to all the tag constructs of C code, member functions are also recognized, and optionally member variables if you use the ‘--members’ option. Tags for variables and functions in classes are named ‘class::variable’ and ‘class::function’. operator definitions have tag names like ‘operator+’.
  • In Java code, tags include all the constructs recognized in C++, plus the interface, extends and implements constructs. Tags for variables and functions in classes are named ‘class.variable’ and ‘class.function’.
  • In LaTeX text, the argument of any of the commands \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,

              export TEXTAGS

    specifies (using Bourne shell syntax) that the commands ‘\mycommand’ and ‘\myothercommand’ also define tags.

  • In Lisp code, any function defined with 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.
  • In Scheme code, tags include anything defined with 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 code, functions, procedures, packages, tasks and types are tags. Use the ‘--packages-only’ option to create tags for packages only.

    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:

    package body.
    package spec.

    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.

  • In assembler code, labels appearing at the beginning of a line, followed by a colon, are tags.
  • In Bison or Yacc input files, each rule defines as a tag the nonterminal it constructs. The portions of the file that contain C code are parsed as C code.
  • In Cobol code, tags are paragraph names; that is, any word starting in column 8 and followed by a period.
  • In Erlang code, the tags are the functions, records and macros defined in the file.
  • In Fortran code, functions, subroutines and block data are tags.
  • In HTML input files, the tags are the title and the h1, h2, h3 headers. Also, tags are name= in anchors and all occurrences of id=.
  • In Lua input files, all functions are tags.
  • In makefiles, targets are tags; additionally, variables are tags unless you specify ‘--no-globals’.
  • In Objective C code, tags include Objective C definitions for classes, class categories, methods and protocols. Tags for variables and functions in classes are named ‘class::variable’ and ‘class::function’.
  • In Pascal code, the tags are the functions and procedures defined in the file.
  • In Perl code, the tags are the packages, subroutines and variables defined by the 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’.
  • In PHP code, tags are functions, classes and defines. When using the ‘--members’ option, vars are tags too.
  • In PostScript code, the tags are the functions.
  • In Prolog code, tags are predicates and rules at the beginning of line.
  • In Python code, 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.

  Published under the terms of the GNU General Public License Design by Interspire