主要な言語におけるタグ構文の定義は以下の通りです。
struct、union、enumの定義も同様です。#defineのマクロ定義、#undefおよびenumの定数もタグとなりますが、タグテーブルを作成する際に‘--no-defines’を指定した場合は除きます。同様に、グローバル変数も‘--no-globals’を指定しない限りタグとなり、構造体メンバも‘--no-members’を指定しない限りタグとなります。‘--no-globals’、‘--no-defines’、‘--no-members’を使用することで、タグテーブルファイルを大幅に小さくできます。
etags に ‘--declarations’
オプションを指定することで、関数定義に加えて関数宣言や外部変数にもタグを付けることができます。
operator の定義には、‘operator+’のようなタグ名が付与されます。 ‘--class-qualify’オプションを指定すると、クラス内の変数および関数のタグは‘class::variable’および‘class::function’という名前になります。
デフォルトでは、クラスのメソッドやメンバはクラス修飾されないため、ソース内でそれらの名前をより正確に特定しやすくなります。
interface、extends、implementsという構文が含まれます。クラス内の変数や関数用のタグは、‘class.variable’および‘class.function’と名付けられています。
\chapter、\section、\subsection、\subsubsection、\eqno、\label、\ref、\Ref、\footref、\cite、\bibitem、\part、\appendix、\entry、\index、\def、\edef、\gdef、\xdef、\newcommand、\renewcommand、\newenvironment、\renewenvironment、\DeclareRobustCommand、\newrobustcmd、\renewrobustcmd、\providecommand、\providerobustcmd、\NewDocumentCommand、\RenewDocumentCommand、\ProvideDocumentCommand、\DeclareDocumentCommand、\NewExpandableDocumentCommand、\RenewExpandableDocumentCommand、\ProvideExpandableDocumentCommand、\DeclareExpandableDocumentCommand、\NewDocumentEnvironment、\RenewDocumentEnvironment、\ProvideDocumentEnvironment、\DeclareDocumentEnvironment、\csdef、\csedef、\csgdef、\csxdef、\csletcs、\cslet、\letcs、\let、\cs_new_protected_nopar、\cs_new_protected、\cs_new_nopar、\cs_new_eq、\cs_new、\cs_set_protected_nopar、\cs_set_protected、\cs_set_nopar、\cs_set_eq、\cs_set、\cs_gset_protected_nopar、\cs_gset_protected、\cs_gset_nopar、\cs_gset_eq、\cs_gset、\cs_generate_from_arg_count、および\cs_generate_variantの引数はタグです。また、これらのコマンドのアスタリスク付きバリアントの引数も同様にタグとなります。
etags を呼び出す前に環境変数 TEXTAGS
で指定すれば、他のコマンドでもタグを作成できます。この環境変数の値は、コマンド名をコロン区切りで並べたリストとする必要があります。例えば、
TEXTAGS="mycommand:myothercommand" export TEXTAGS
(Bourneシェルの構文を用いて)、コマンド ‘\mycommand’ および ‘\myothercommand’ もタグを定義することを指定します。
defun で定義された関数、defvar または defconst
で定義された変数、および一般に0列目の ‘(def’
で始まる式の第1引数は、タグとなります。例外として、(defvar foo) 形式の式は宣言として扱われ、‘--declarations’ オプションが指定されている場合にのみタグ付けされます。
def で定義されたものや、名称が ‘def’ で始まる構文で定義されたものが含まれます。また、ファイルのトップレベルで set! を用いて設定された変数も含まれます。
他にもいくつかの言語がサポートされています:
Adaでは、同じ名称を異なる種類のエンティティ(例:プロシージャと関数)に使用できます。また、パッケージ、プロシージャ、関数などには、仕様(すなわちインターフェース)と本体(すなわち実装)が存在します。目的の定義を選択しやすくするため、Adaのタグ名にはエンティティの種類を示す接尾辞が付いています:
パッケージ本体。
関数。
タスク。
手順。
package spec.
型。
したがって、M-x find-tag RET bidule/b RETはパッケージbiduleの本体に直接移動し、M-x find-tag RET bidule 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!で定義されたものはすべてタグ付けされます。
また、他のフォーマットや言語に対応するために、正規表現マッチング(Etags Regexpsを参照)に基づいてタグを生成することも可能です。