Google Tags(GTags)を試してみた(with Vim)
http://code.google.com/p/google-gtags/
http://google-code-updates.blogspot.com/2007/03/google-gtags-version-10.html
Google Tags(GTags)のメジャーバージョンがリリースされた様子。
これはなにかって言うと、要するにtagsファイルをサーバにおいて(メモリ上に展開されるらしい)、タグジャンプするときにサーバのデータを参照するctags。
みんながローカルで「ctags -R」を実行しなくてもいいってことだね。
なんか非常にGoogleらしい。
今のところ対応言語はC++、Java、Pythonのみ。
Googleオフィシャル言語だけかよ。。。
エディタは長いことVimを使ってるので、当然Vimから使いたいわけだけど、Pythonインタプリタが組み込まれてる必要があるので、めんどくさくて今まで試してなかった。
メジャーバージョンがリリースされたことだし試してみた。Emacsは知りません。
まずはVimにPythonインタプリタを組み込む必要がある。
:echo has('python')
で1が返ってくる人はそのままでOK(あんまりいない気がする)。
なんか最近PerlやRuby組み込みのVimが必要でめんどくさくてあきらめたVimプラグインがあったような気がしたので、いっそのこと全部入れちゃえってことで、Perl、Ruby、Python組み込みのVimを作った。
./configure \ --enable-multibyte \ --enable-xim \ --enable-fontset \ --with-features=big \ --enable-perlinterp \ --enable-rubyinterp \ --enable-pythoninterp \ && make && sudo make install
:echo has('perl') 1 :echo has('ruby') 1 :echo has('python') 1
よしOK。
GTagsのインストールは
http://code.google.com/p/google-gtags/wiki/GTagsInstallation
の通りで問題なし。
ディレクトリごと /usr/local/gtags にコピーしといた。
~/.vimrcに
source /usr/local/gtags/gtags.vim nmap <C-]> :call Gtag(expand('<cword>'))<CR>
を追記してインストールは完了。
あとはExuberant Ctagsが必要だけど、まぁだいたい最近はもともと入ってるでしょう。
うちのリポジトリには対応してる言語で書かれたソースがないので(それも試さなかった理由のひとつ)、、、GTagsのソースそのもので試してみた。
GTagsのソースを展開したディレクトリで
/usr/local/gtags/gentags.py \ --etags=/usr/bin/etags \ --rtags=/usr/local/gtags/rtags.py \ --etags_to_tags=/usr/local/gtags/etags_to_tags.py
を実行してtagsファイルを作成。
サーバの指定はどうするのかなと思ってたら、gtags.pyを編集するみたい。
とりあえずローカルで動かしてるので、
"c++" : { "definition" : [("localhost", 2222)],
とした。サーバは複数記述できるみたい。深く追ってないので詳細は不明。
で
/usr/local/gtags/gtags \ --tags_file ./cpp.tags.gz \ --tags_port 2222 \ --gunzip
としてサーバを実行。
で適当なところでC-]すると、、、、出来た!結構速い。
実際に使うとすると、更新はどうするのかな。
Subversionだとpost-commitフックでgentags.py→reload-tags-fileかなぁ。
いまのところ個人的には使う予定はないけど、たぶんかなり便利です。GTags。
今のところ、Googleのコード(C++とPythonで書かれてる)が読めるのが一番のメリットだったりする。
バリバリのC++がステキ(Pythonはあんまりしらない)。
Google's Javaも読みたいなぁ。