以下は、もっともポピュラーな言語でタグ構文が定義される方法です:
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を参照してください)。