私は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()ます。
それはもっと明確ですか?