Next: , Previous: , Up: tagsテーブル   [Contents][Index]


29.4.2.2 タグテーブルの作成

etagsプログラムは、タグテーブルファイルを作成するために使用されます。このコマンドは、 ソースファイルタグの構文で説明している複数の構文を理解します。 以下はetagsを実行する方法です:

etags inputfiles

etagsプログラムは、指定されたファイルを読み込んで、カレント作業ディレクトリーのTAGSという名前のファイルに、タグテーブルを書き込みます。‘--output=file’オプションを使用して、タグテーブルに異なる名前のファイル名を指定することもできます。ファイル名に-を指定すると、タグテーブルを標準出力に出力します。‘--append’オプションを使用して、既存のファイルに新たに作成したtagテーブルを追加することもできます。

指定されたファイルが見つからない場合、etagsはそれらの圧縮されたバージョンを探して、それらを解凍して読み込みます。MS-DOSでは、コマンドラインに‘mycode.c’が与えられ、‘mycode.c’が存在しないとき、etagsmycode.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にたいするタグの生成方法の詳細を出力します。