以下は、もっともポピュラーな言語でタグ構文が定義される方法です:
struct
、union
、enum
の定義もタグです。タグテーブルを作成するとき、‘--no-defines’を指定しなければ、#define
マクロ定義、#undef
およびenum
定数もタグになります。同様に、‘--no-globals’を指定しなければグローバル変数もタグで、‘--no-members’を指定していなければ構造体のメンバーもタグです。‘--no-globals’、‘--no-defines’、‘--no-members’を使用することにより、タグテーブルを小さくすることができます。
etags
に‘--declarations’オプションを与えることにより、関数定義(function
definitions)に加えて、関数宣言(function declarations)と外部変数(external
variables)もタグ付けできます。
operator
定義は、‘operator+’のような名前をもちます。‘--class-qualify’オプションを指定した場合、クラスの変数および関数にたいするタグは、‘class::variable’および‘class::function’という名前になります。デフォルトでは、クラスのメソッドとメンバーはクラス修飾されていません。これにより、ソース内でより正確に、それらの名前が識別可能になります。
interface
、extends
、implements
もタグとして認識されます。クラスの変数および関数にたいするタグは、‘class.variable’および‘class.function’という名前になります。
\chapter
、\section
、\subsection
、\subsubsection
、\eqno
、\label
、\ref
、\cite
、\bibitem
、\part
、\appendix
、\entry
、\index
、\def
、\newcommand
、\renewcommand
、\newenvironment
、\renewenvironment
にたいする引数がタグになります。
etags
を呼び出す前に、環境変数TEXTAGS
で指定することにより、他のコマンドも同様にタグにできます。この環境変数の値には、コロンで区切られたコマンド名のリストを指定します。たとえば、
TEXTAGS="mycommand:myothercommand" export TEXTAGS
これは、(Bourneシェルの構文の使用して)コマンド‘\mycommand’と‘\myothercommand’もタグとして定義します。
defun
で定義された任意の関数、defvar
およびdefconst
で定義された任意の変数、および一般的に列0から‘(def’で始まる任意の式の最初の引数はタグです。例外として(defvar
foo)
という形式の式は、宣言として扱われ、‘--declarations’オプションが与えられたときだけタグになります。
def
で定義されたすべて、または名前が‘def’で始まる構成がタグに含まれます。これらは、ファイルのトップレベルでset!
でセットされる変数も含まれます。
他の言語もいくつかサポートされます:
Adaでは、異なる種類のエンティティー(たとえば関数とプロシージャー)に、同じ名前を使うことができます。またパッケージ、プロシージャー、関数と似たものに、スペック(spec、たとえばinterface)およびボディー(body、たとえばimplementation)があります。欲しい定義を簡単に取り出すために、Adaのタグ名にはエンティティーのタイプを示す接尾辞がつきます:
パッケージのボディー(package body)。
関数(function)
タスク(task)。
プロシージャー(procedure)。
パッケージのスペック(package spec)。
タイプ(type)。
したがって、M-x find-tag RET bidule
RETは単にbidule
という任意のタグを検索しますが、M-x find-tag RET
bidule/b RETは直接パッケージbidule
のボディーに移動します。
title
、およびh1
、h2
、h3
ヘッダーがタグです。アンカー内のname=
、およびすべてのid=
もタグです。
package
、sub
、use
constant
、my
、local
で定義されます。グローバル変数をタグ付けしたい場合、‘--globals’を使用します。サブルーチンにたいするタグの名前は、‘package::sub’になります。デフォルトのパッケージで定義されたサブルーチンの名前は、‘main::sub’になります。
def
およびclass
はタグを生成します。
def
、class
、module
はタグを生成します。定数もタグを生成します。
fn
、enum
、struct
、macro_rules!
で定義されているものはすべてタグです。
他の書式や言語を扱うために、regexpにたいするマッチにもとづいてタグを生成することもできます(etagsのregexpを参照してください)。