Emacsでは、いかなる時点においても選択済みのタグテーブルは最大で1つのみです。タグテーブルを操作するすべてのコマンドは、まず選択済みのテーブルを使用します。タグテーブルを選択するにはM-x visit-tags-tableと入力します。これによりタグテーブルのファイル名が引数として読み込まれます。なお、TAGSは、デフォルトディレクトリから再帰的に上方向へ検索した際に見つかった、TAGSという名前のファイルを含む最初のディレクトリをデフォルトとします。
グローバルマイナーモード etags-regen-mode
を有効にすると、必要に応じてタグテーブルファイルが自動的に検出され、参照されます。その後、手動で visit-tags-table を呼び出してタグテーブルを選択すると、etags-regen-mode によってタグテーブルの自動再生成が無効になります。タグテーブルの作成 を参照してください。
Emacsは、タグテーブルの内容を実際に読み込むのは、それを使用しようとした時だけです。visit-tags-tableが行っているのは、ファイル名を変数tags-file-nameに格納することだけで、それ以上のことはほとんどしません。この変数の初期値はnilであり、この値によって、タグテーブルを扱うすべてのコマンドは、使用するためにタグテーブルのファイル名を要求しなければならないことが示されています。
選択中のタグテーブルに加えて、Emacsは併用する複数のタグテーブルのリストを保持しています。例えば、ライブラリを使用するプログラムを開発している場合、プログラムとライブラリ双方のタグテーブルを利用できるようにしておけば、Emacsは両方から識別子を容易に見つけることができます。選択中のタグテーブルに識別子が含まれていない場合や、tagsコマンドが必要とするソースファイルが記載されていない場合、そのコマンドは現在のタグテーブルリストにある他のすべてのタグテーブルを順に試行します。
別のタグテーブルが既に読み込まれている状態で、visit-tags-table
を使用して新しいタグテーブルを読み込む場合、2つの選択肢があります。新しいタグテーブルを現在のタグテーブルリストに追加するか、あるいは現在のリストを破棄して新しいリストを開始するかです。新しいリストを開始した場合、新しいタグテーブルは他のテーブルに代わって使用されます。新しいテーブルを現在のリストに追加した場合、他のテーブルと併せて使用されます。
次のように変数 tags-table-list
にディレクトリ名のリストを設定することで、タグテーブルの正確なリストを指定できます。
(setq tags-table-list
'("~/.emacs.d" "/usr/local/lib/emacs/src"))
これにより、タグコマンドは~/.emacs.dディレクトリおよび/usr/local/lib/emacs/srcディレクトリ内のTAGSファイルを参照するようになります。その順序は、現在どのファイルにいるか、およびどのタグテーブルがそのファイルに言及しているかによって決まります。
tags-file-name と tags-table-list の両方を設定しないでください。