私はctags(-e)を使用していますが、非常にうまく機能します。ただし、メンバー関数を検索すると、ctagsは最初に見つかった定義を返します。例えば:
ClassA classA;
classA.Initialize();
classA.DoSomething();
ClassB classB;
classB.Initialize();
classB.PerformAction();
Initialize()
でタグ(M-.
またはg^]
)を検索すると、classA.Initialize()
に移動する予定ClassA::Initialize()
です。同じメソッドを持つ別のクラスがあり、そのタグがclassA
タグファイルののタグの前に表示されている場合(たとえば、ClassB::Initialize()
)、に乗車しClassB::Initialize()
ます。
ただし、入力M-.
してアクセスしたいタグを修正するとClassA::Initialize()
、に移動しClassA::Initialize()
ます。これを自動化する方法はありますか?
この動作はemacsとvimで一貫しています。
さらに、GNUグローバル(gtags)では。も見つかりませんClassA::Initialize()
。Initialize()
メソッドを持つすべてのクラスを出力するだけです。
編集:
質問がまだ明確でない場合は、メソッドを調べるプラグインがあるかどうかを尋ねています(たとえば、.
またはを介してアクセスされるメンバー関数ですか->
)、ある場合は、オブジェクトのタイプを見つけて、Object::Method
代わりに検索しますメソッドの場合。
これは単純な機能です。例えば:
- タグがメソッドかどうかを確認してください。
- それがメソッドである場合、それはクラスのメンバーです。
- クラスのメンバーが現在のカーソルの前にコードを解析し、宣言を見つけた場合(ClassAclassA)。
ClassA::Initialize()
の代わりに、上記のすべてが当てはまるかどうかを探しInitialize()
ます。
それはもっと明確ですか?