1. Computing & Technology

Discuss in my forum

Tag Syntax

Emacs Documentation

By , About.com Guide

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.

  • 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, or \index, 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="def:newcommand:newenvironment" export TEXTAGS

    specifies (using Bourne shell syntax) that the commands \def, \newcommand and \newenvironment 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:

©2012 About.com. All rights reserved.

A part of The New York Times Company.