識別子とは、プログラムの構文上のサブユニット(関数、サブルーチン、メソッド、クラス、データ型、マクロなど)の名称のことです。プログラミング言語において、各識別子はその言語の構文における記号となります。識別子はタグとも呼ばれます。
プログラムの開発および保守には、各識別子がどこで定義・参照されているかを迅速に特定したり、プロジェクト全体にわたって識別子をリネームしたりするなどの機能が必要です。こうした機能は、プログラミング言語をサポートするために定義されたモード以外の主要なモードにおける参照箇所を探す際にも有用です。例えば、テキストやTeXドキュメントの章、節、付録などもサブユニットとして扱うことができ、それらの名前を識別子として利用できます。本章では、プログラムソースおよびその他の種類のテキストにおけるあらゆる種類のサブユニットの名称を総称して、「識別子」という用語を用います。
Emacsは、これらの機能への統一的なインターフェースとして「xref」を提供しています。
xrefがその機能を果たすには、情報を活用し、メジャーモード固有の手法を用いる必要があります。どのファイルから識別子を検索するか、識別子への参照をどう見つけるか、識別子をどう補完するか――こうしたすべてがモード固有の知識となります。xrefは、機能のうちモード固有の部分を、モードが提供するバックエンドに委ねます。また、独自のデフォルト値を提供していないモード向けに、一部のコマンドのデフォルト値も組み込んでいます。
バックエンドは、その機能をさまざまな方法で実装できます。以下にいくつか例を挙げます。
etags が含まれており、参照を タグテーブル
に抽出することで、多くのプログラミング言語やHTMLなどのその他のメジャーモードをサポートしています。etags
がサポートする言語のメジャーモードは、タグテーブルをバックエンドの基盤として利用できます。etags-regen-mode
を有効にすると、サポートされているファイルタイプについて現在のプロジェクト全体でタグテーブルが生成され、編集時に自動的に更新されます。あるいは、ファイルセットや更新タイミングを制御するために、手動でテーブルを構築することも可能です。詳細は
タグテーブルの作成 を参照してください。