2017-02-08 6 views
0

thisの質問と同様に、プロシージャポインタとそれが指し示す場所をctagsに認識させる方法があるかどうかを知りたいと思います。Fortranのプロシージャポインタ付きctags

例:

if(code_is_2D) then 
    get_convective => get_convective_2D 
else 
    get_convective => get_convective_3D 
end if 

get_convectiveCTRL-]を押すと、私はそれが指す方手順に移動したいです。私は--fortran-kinds=+iを追加しようとしましたが、うまくいきませんでした。

編集:私はLucHermitteさんのコメントの前にはctags(exhuberant /ユニバーサル)の複数のバージョンがあった知らなかった

。私は前者を使っていた。私はそれを削除し、universal-ctagsをインストールしました。今、フラグ--fortran-kinds=+iを使用するとき、私はプロシージャのポインタの定義に移動されていますが、それが指す実際のプロシージャではありません。あなたが<C-]>を行う際のVimには問題あなたのtagsファイル内

+0

放棄されたexhuberant-ctagsまたはその管理されたフォーク、つまりユニバーサル-CTAGを使用していますか? –

+0

@LucHermitte編集をご覧ください – solalito

答えて

0

唯一のフィールドは、次のとおりです。

  • タグ、
  • ファイル名、
  • タグを見つけるために使用Exコマンド。

他のフィールドはまったく使用されません。

<C-]>を実行すると、tagsファイルのすべての行の先頭にカーソルのある単語が検索されます。次のようなものがあります。

次に、関連するファイル名を開き、関連付けられたExコマンドを実行します。ような何か:

:e path/to/filename 
:/^\ \ \ \ get_convective 

しかし、あなたは、あなたがそれはあなたのコードにを指し示すものは何でもしたい、get_convectiveタグ自体を望んでいません。問題は、ここでは、Vimされていること:

  • がこれまでどのようなタグ検索のコンテキスト内にどのようなポイントを見ていないだろう、あなたのコードを理解していません。

また、自分自身をctagsの:

  • はどちらかあなたのコードを理解していない

    • はとにかくその関係を記録しません。

    したがって、あなたはほぼ確実にこのようなカスタム関数が必要になります。この機能は、お使いのインタフェースはctagsのでインデックス化されていることを前提としていることを

    function! JumpToTagOrInterface() 
        let this_line = getline('.') 
        if this_line =~ '=>' && col('.') < stridx(this_line, '=>') 
         execute 'tag' matchstr(this_line, '\S\{-}$') 
        else 
         tag <cword> 
        endif 
    endfunction 
    nnoremap <key> :call JumpToTagOrInterface()<CR> 
    

    注意を。

  • 関連する問題