Rでのctagsの文書化された使用法はありますか?これは役に立ちますか?実装するのは難しいでしょうか?
具体的には、Vimを使い始めたばかりです。あるファイルにR関数を記述し、別のファイル(Rnwファイル、テストファイル、その他のスクリプトなど)で関数を使用し、Ctrl+]を使用して関数に移動できると便利です。ソース。
これは Henrico の回答を修正したもので、次のコードをコピーして ~/.ctags ファイルに貼り付けることで実装できます。Henrico のコードはインデントされた関数では機能しませんでしたが、次のコードでは機能します。
--langdef=R
--langmap=r:.R.r
--regex-R=/^[ \t]*"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t]function/\1/f,Functions/
--regex-R=/^"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^f][^u][^n][^c][^t][^i][^o][^n]/\1/g,GlobalVars/
--regex-R=/[ \t]"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-[ \t][^f][^u][^n][^c][^t][^i][^o][^n]/\1/v,FunctionVariables/
これにより、関数だけでなく ctags で変数を認識できるようになります。taglist vim アドオンを使用している場合は、グローバル変数と他の変数を区別できます。また、taglist を使用している場合は、次を vimrc に貼り付ける必要があります。
let tlist_r_settings = 'R;f:Functions;g:GlobalVariables;v:FunctionVariables'
これは、ホームディレクトリにある.ctagsファイルの内容です。インターネットのどこかで見つけました。これを使用して、vimのタグファイルを生成できます。
--langdef=Splus
--langmap=Splus:.s.S.R.r.q
--regex-Splus=/^[ \t]+"?([.A-Za-z][.A-Za-z0-9_]*)"?[\t]*<-[\t]*function/\1/
--regex-Splus=/^"?([.A-Za-z][.A-Za-z0-9_]*)"?[ \t]*<-/\1/
おそらく、ctagsに新しい言語のサポートを追加する方法を読むことができます。