Next: Xref Commands, Up: Find Identifiers [Contents][Index]
xref
が可能にすることの中で一番重要なのは、指定した識別子の定義を探すことです。
識別子の最初の定義を探します(xref-find-definitions
)。
patternにマッチする名前の識別子を探します(xref-find-apropos
)。
識別子の最初の定義を探して、他のウィンドウに表示します(xref-find-definitions-other-window
)。
識別子の定義を探して、それを新しいフレームに表示します(xref-find-definitions-other-frame
)。
マウスでクリックした識別子の最初の定義を探します。
前にM-.または同種のコマンドを呼び出した場所に戻ります(xref-pop-marker-stack
)。
etags
バックエンドを使用するように、xref
を切り替えます。
M-.
(xref-find-definitions
)は、ポイント位置の識別子の定義を表示します。プレフィックス引数を与えた、またはポイント位置に識別子がない場合は、識別子の入力を求めます(常に識別子を尋ねるようにしたい場合は、xref-prompt-for-identifier
をt
にカスタマイズする)。
M-.の引数に識別子を入力する際には、既知の識別子の名前を補完候補として通常のミニバッファーの補完コマンドを使用できます(Completionを参照)。
バッファーを切り替えるほとんどのコマンドと同様に、xref-find-definitions
は新しいバッファーを他のウィンドウ、または新しいバッファーのために新しいフレームを作成する変種をもっています。前者はC-x 4 . (xref-find-definitions-other-window
)、後者はC-x 5 .
(xref-find-definitions-other-frame
)です。
コマンドxref-find-definitions-at-mouse
はxref-find-definitions
と同じように機能しますが、マウスイベントがあった箇所周辺の識別子を探します。このコマンドはたとえばC-M-mouse-1のようなマウスイベントにバインドされることを意図しています。
コマンドC-M-. (xref-find-apropos
)はtags用のapropos
(Aproposを参照)のようなコマンドです。これは指定されたregexpにマッチする名前の選択済みtagsテーブル内の識別子リストを表示します。これはM-.と似ていますが、シンボル名(固定文字列)ではなく識別子regexpマッチングを行う点が異なります。デフォルトではM-.のように*xref*バッファーをポップアップしますが、変数tags-apropos-additional-actions
をカスタマイズして追加の出力を表示できます。詳細はこの変数のドキュメントを参照してください。
上記コマンドのいずれかがマッチする1つ以上の定義を見つけると、デフォルトではマッチ候補を表示する*xref*バッファーをポップアップします(C-M-.は少なくともマッチを1つ見つけたら常に*xref*バッファーをポップアップする)。候補は通常はファイル名とそのファイル内のマッチした識別子として、そのバッファーに表示される。そのバッファーでは表示する任意の候補を選択でき、Xref Commandsで説明する追加のコマンドもあります。ただし変数xref-auto-jump-to-first-definition
の値がmove
なら、これらの中から最初の候補が*xref*バッファー内で自動的に選択されて、t
やshow
なら最初の候補が自身のウィンドウ内に自動的に表示されます。t
の場合には更に最初の候補を表示中のウィンドウの選択も行います。デフォルト値のnil
では、*xref*バッファーに候補を表示しますが、どの候補も選択しません。
定義を表示した場所に戻るには、M-,
(xref-pop-marker-stack
)を使用します。これは最後にM-.を呼び出したポイントにジャンプします。したがって、M-.により何らかの定義を見つけて確認したら、M-,で戻ることができます。M-,は変数xref-marker-ring-length
により決定される深さ(デフォルトは16)で、ステップを再トレースできます。
いくつかのメジャーモードは、特定の識別子の検索に失敗するかもしれないxref
サポート機能をインストールするかもしれません。たとえば、Emacs
Lispモード(Lisp Evalを参照)では、デフォルトではM-.はカレントEmacsセッションにロードされた、あるいは自動ロード(Autoload in The Emacs Lisp Reference
Manualを参照)されるLispパッケージの関数と変数だけを検索します。M-.が何らかの識別子の検索に失敗する場合は、xref
にetags
バックエンド(Xrefを参照)の使用を強制することができます。これを行うには、M-x xref-etags-modeを呼び出してXref
Etagsマイナーモードをオンに切り替えて、再度M-.を呼び出します(これが機能するためには、ソースファイルのディレクトリーツリー内でtagテーブルを作成するために、必ずetags
を実行すること。Create Tags Tableを参照されたい)。