gtagsにバグが。

cygwinでビルドしたgtagsがshell上だとうまく動くんだけどemacs上だとgtags-visit-rootdirしてもGTAGSROOTが気に食わないと怒られたので、速度のことも考えてmsysでビルドしなおすことにした。
こっちはこっちでファイルリスト作って喰わせるとpath name is too longって怒られる。中身見てみたらunixパス前提になってるとこがちらほら。
はぁ、直すか…。

直してみた

1箇所修正するだけで動いた!
バージョンはglobal-5.7.1
libutil/abs2rel.c(410): *base!= '/' これを base[1]!=':' にしただけ。
gtags/gtags.elが使えるようになって第一印象はVisualStudioのインテリセンス+VisualAssistXの方が便利だ。理由は、

1.タグ作成時にマクロが混ざるとうまく展開してくれない。

 恐らく#includeの解決に失敗してるんだと思うんだけど、これはうちのプロジェクトがincludeパス指定(-I)を多用しているのが原因かも。何か対処方法はあるんだろうか?

2.gtags-find-with-grepがブロック処理になっている。

 検索に時間がかかるのは仕方が無いんだけど、その間操作を禁止されるのがつらい。
 VisualStudioはブロックどころかインクリメンタル表示ですよ。

3.ソース全体とライブラリ単位ごとなど検索対象を切り替えるためにgtags-visit-rootdirを呼ばなくてはいけない。

 タグファイルのコンテキストがひとつしかないのが原因。
 これはたぶんgtags.elを書き換えれば良いんだろうけどまだlisp初心者なのでよくわからん。

VisualAssitX

http://www.wholetomato.com/
VisualStudioで作業している職業プログラマな方にはお勧めです。有料ですけど。
(そこそこ重いです)