etags
プログラムは、タグテーブルファイルを作成するために使用されます。このコマンドは、
ソースファイルタグの構文で説明している複数の構文を理解します。
以下はetags
を実行する方法です:
etags inputfiles...
etags
プログラムは、指定されたファイルを読み込んで、カレント作業ディレクトリーのTAGSという名前のファイルに、タグテーブルを書き込みます。‘--output=file’オプションを使用して、タグテーブルに異なる名前のファイル名を指定することもできます。ファイル名に-を指定すると、タグテーブルを標準出力に出力します。‘--append’オプションを使用して、既存のファイルに新たに作成したtagテーブルを追加することもできます。
指定されたファイルが見つからない場合、etags
はそれらの圧縮されたバージョンを探して、それらを解凍して読み込みます。MS-DOSでは、コマンドラインに‘mycode.c’が与えられ、‘mycode.c’が存在しないとき、etags
はmycode.cgzのような名前のファイルを探します。
ファイルの内容が変更されてタグテーブルが古くなったときは、etags
を再び実行することにより、タグテーブルを更新できます。タグテーブルにタグが記録されていなかったり、間違ったファイルにたいして記録している場合、タグテーブルを更新するまで、Emacsはそれの定義を見つけることができません。しかしタグに記録されている位置が、(編集により)少し間違っているようなときは、少しの遅れは生じますがEmacsは正しい位置を見つけることができます。
したがって、編集するたびにタグテーブルを更新する必要はありません。リストしたい新しいタグを定義したときや、タグ定義をあるファイルから他のファイルへ移動したとき、または大幅な変更を施したときは、タグテーブルを更新するべきです。
etags
に‘--include=file’オプションを渡すことにより、タグテーブルに他のタグテーブルをインクルード(include)できます。これによりインクルードされたタグファイルでカバーされる、すべてのファイルをカバーできます。
etags
を実行するとき、ソースファイルを相対ファイル名で指定した場合、タグファイルには、そのタグファイルが最初に書き込まれたディレクトリーにたいする相対ファイル名が含まれます。この方法を使えば、ディレクトリーツリー全体を移動しても、タグファイルは正しくソースファイルを参照します。しかしタグファイルが-または/devのときは、ファイル名はカレント作業ディレクトリーにたいする相対ファイル名になります。これはタグを標準出力に書き込むときに便利です。
相対ファイル名を使う場合、違うディレクトリーにあるタグファイルを指すシンボリックリンクを指定するべきではありません。なぜならこれは一般的にファイル名を無効にするからです。
etags
の引数に絶対ファイル名を指定した場合、タグファイルには絶対ファイル名が含まれます。この方法では、ソースファイルが同じ場所にある限り、タグファイルを移動してもタグファイルは同じ名前を参照します。絶対ファイル名は‘/’で開始されるか、MS-DOSおよびMS-Windowsでは‘device:/’で開始されます。
非常に大きな数のファイルからタグテーブルを作成したい場合、それをコマンドラインに指定すると問題が発生するかもしれません。なぜならコマンドライン引数の長さに制限のあるシステムもあるからです。この制限は、以下のようにファイル名の場所にダッシュを指定して、etags
にファイル名を標準入力から読み込むように指示して回避することができます。
find . -name "*.[chCH]" -print | etags -
etags
はファイル名とファイル内容にもとづいて、入力ファイルで使用されている言語を認識します。これは最初に、特定の言語にたいして一般的に使用されるファイル名と拡張子にたいするマッチを試みます。いくつかの言語には、既知の名前のインタープリター(Perlのperl
、Prologのpl
など)があるので、etags
は次に入力ファイルの最初の行でインタープリター指定‘#!interp’を調べて、既知のインタープリターとのマッチを行います。これが失敗、または言語の自動検知をオーバーライドしたい場合は、‘--language=name’オプションで、明示的に言語を指定できます。このオプションはファイル名に混ぜることができます。各指定はその後に続くファイル名に適用されます。‘--language=auto’の指定は、ファイル名とファイル内容から言語を推測するようetags
に指示します。‘--language=none’を指定すると、言語に特有の処理を完全にオフに切り替えます。この場合、etags
はregexpのマッチングだけでタグを認識します(etagsのregexpを参照してください)。これは、etags
がまだサポートしていない言語を使用するファイルが入力の際に、etags
がデフォルト言語としてFortranおよびCにフォールバックするのを抑止します。
オプション‘--parse-stdin=file’は、etags
をプログラムから呼び出すときに便利です。これは、(1回だけ)コマンドラインからファイル名を読み取るとき使用できます。etags
は標準入力から読み取り、生成されたタグがファイルfileに属するとマークします。
GNUコーディング規約を遵守しないソースファイルにおいて、関数やstruct
定義のようなトップレベルの定義だけに許されている列0の大カッコ(‘{’および‘}’)が存在するようなら、etags
が列0にある閉じ大カッコを誤って解釈することを防ぐためにオプション‘--ignore-indentation’を使うことをお勧めします。
‘etags
--help’オプションはetags
が認識する言語と、言語を推測するためのファイル名ルールのリストを出力します。これは利用可能なetags
オプションと、簡単な説明のリストも出力します。このオプションの後に、1つ以上の‘--language=lang’を指定すると、langにたいするタグの生成方法の詳細を出力します。
etags
を呼び出してタグテーブルの作成や更新を手作業で行うかわりに、Emacsが自動的に行うように指示できます。グローバルなマイナーモードetags-regen-mode
が有効の場合には、必要に応じてタグテーブルを生成したり、タグの提供元となるソースファイルのいずれかを編集した際の更新に対処します。このモードはプロジェクト用にタグテーブルの再生成において、etags
にどのファイルを与えるかを判断するために、カレントプロジェクトの構成(プロジェクトで作業するを参照)を使用します。以下のユーザーオプションを使って、このモードの動作する方法をカスタマイズできます:
etags-regen-program
¶タグテーブルを再生成するプログラムです(デフォルトはetags
)。
etags-regen-program-options
¶タグテーブル再生成の際にプログラムに渡すコマンドラインオプションです。
etags-regen-ignores
¶タグテーブル再生成の際に無視するファイルを指定するためのglobパターンのリストです。
M-x visit-tags-table (タグテーブルの選択を参照)でタグテーブルを手作業で選択した場合には、etags-regen-mode
自体が実質的に無効になります。タグテーブルを手作業で管理したいとみなして、タグテーブルの自動的な作成と更新を行わなくなるのです。コマンドtags-reset-tags-tables
を呼び出してvisit-tags-table
を使えば、この効果をキャンセルできます。