phpctagsとは
僕はつい先日、vimにtagbar-phpctagsを導入しました。
tagbarでexcuberant ctagsの代わりにphpctagsを使ってくれるものです。
phpctagsっていうのがこいつです。
https://github.com/vim-php/phpctags
exuberant ctagsが生成するタグ情報は正直ちょっと微妙です。
メソッドを関数として認識してしまったり、メンバ変数とローカル変数もいっしょくたにされたりします。少なくともデフォルトの状態では。
それをいい感じに生成してくれるのがphpctagsです。
phpctagsが吐き出してくれたタグ情報を利用すると...
こんな感じになります。
便利なんですが、phpctagsをビルドして、いざ動かすときにハマってしまったので残しておきます。
ビルド方法
簡単です。
まず、
1. phpctagsのレポジトリをクローンしてきて
2. composer updateして
3. makeコマンドを叩く
これだけです。
buildディレクトリにphpctags.pharができているかと思います。やったね!!
タグが生成されない問題
しかし...
php phpctags.phar hoge.php
動かないです。デバッグオプションをつけてみると、PHPParser_Parser
クラスが見つかっていない模様。
composerで依存ライブラリは落としたはずだし、なんでだ?とドハマりいたしました。
原因・解決方法
PHP-Parserのバージョンが上がったことにより、クラスの命名が名前空間ベースになり、古いアンダーバー区切りのクラス名が使えなくなったことが原因でした。
解決方法としては、クローンしてきたphpctagsのなかのcomposer.jsonを書き換える感じになります。
書き換える内容については、こいつを見てください。
これで、古いバージョンのPHP-Parserが常に依存としてダウンロードされます。
書き換えたら
1. composer update
して、
2. make clean
して
3. make
です。
この修正を受け入れてもらうべく、レポジトリにissueとプルリクエストを投げたのですが、今のところ返信がありません。
コミットも去年で止まっているようですね...悲しいなぁ。
2016/1/17: プリクエストがmasterにマージされました!!
僕の他にハマってる方の参考になればと思います。