XTAGS #2 飛ぶ

タグジャンプ(jump-tag)できるようにするための何やら。

ローカル変数 ed:tags-find-target

この変数にセットした関数が引数なしで呼び出されるので、カーソル位置の単語を調べて

  • クラス名
  • 名前
  • 関数か否か

を多値で返す。
3つ目の値は、nil なら変数、'lisp:structure なら構造体、それ以外なら関数、と扱われるっぽい(tags-find-entry-1 参照)のでそんな感じで。
この情報を元に XTAGS からジャンプ先のファイル名/ポイントを探してくれる。

ローカル変数 ed:tags-find-point

ジャンプ先のファイル名が見つかったらそのファイルを開いて、この関数が呼び出される。引数は以下の4つ。

  • クラス名(ed:tags-find-target から)
  • 名前(ed:tags-find-target から)
  • 関数か否か(ed:tags-find-target から)
  • ポイント(XTAGS エントリから)

ポイントを返すとそこへカーソルを移動する(その後行頭に移動してしまう)ので、XTAGS エントリに記録するポイントは必ずしも正確でなくてもこの関数で調整したりできる。
nil を返すと元のポイントへ移動する。

その他のタグジャンプ関連ローカル変数

ed::tags-case-insensitive

non-nil だと ed:tags-find-target から XTAGS エントリを探すのが case-insensitive になる。

ed::tags-class-method-separator

クラス名とメソッド名の区切り文字列。C++ なら "::"、Java なら "." とか。

  • XTAGS エントリが見つからない時のメッセージ
  • 該当する名前のエントリが複数あった時の選択ダイアログ
  • ed::tags-make-completion-list で作った補完候補