下手な鉄砲も数打ちゃ当たる,ということでどうでしょうか。

どもです。
コロマイト乳剤を散布したけれども,ダニっ子達を全滅させることかなわず,
どうしたもんかなぁと悩んでいるところでございますが,
先日発芽したレジナに,かわゆい本葉がひょっこりでてきているので,
それを見て癒されているわけで。

先日書いた,ctags.el の件ですがね。

この記事のことを言っていたんです。
http://d.hatena.ne.jp/buzztaiki/20090323/1237829072


しかし,よく見たら2年くらい前の記事なのです。
なので,auto-complete で使用する目的のみで,ちょっと作ってみようかなぁと
思っている次第です。
Java の場合は,ちょい前に書いた,auto-java-complete があるから大丈夫だろうし,
ターゲットは,というか,あってほしいのが,いやさ,オレ様が欲しいのが c++-mode 用。

とりあえず,タグファイルをこしらえてみた。


※ 2011/09/09 (Fri) 16:30 修正
タグエントリにクラス名の修飾子がつくようにするオプションを忘れていたので,追記。
すなわち,「--extra=+q 」を忘れていたです。

% find ~/src/googletest/gtest-1.5.0/include/gtest -type f -name '*.h' \
 -print0 | xargs -0 ctags --c++-kinds=+px --fields="+afikKlmnsSzt" -f ./gtest.tags

C++ のソースを相手にする場合は,--c++kinds=+px するのを忘れずに。
これは,それぞれ,prototype と external variable declarations をタグに含めるように
するオプションでごわす。
ま,詳細は,exuberant ctags の man を参照してだされ。
これをしないと,gtest の場合,よく使用する,InitGoogleTest がタグに含まれません。


ほいで,タグファイルの中身ですが,情報がてんこ盛りなのは当然なのですが,
alphabetically sorted なので,検索は2分探索すればいい感じ?
だとすると,auto-complete-etags.el では関数のシグニチャを取得するのに,
わざわざソースを開いているので,その部分を吹っ飛ばせるので,だいぶ無駄を省けそうだ。
というか,シグニチャですが,作ってみたものの,あまり役立ってないのは(ry。
んで,一度補完したものは,シグニチャとかを含めて自前でキャッシュしておけば,
あとあとおいしいのかな。


心配なのは,巨大なタグファイル。つまり,Qtのヘッダから作ったタグファイルとかね。
etags で作成してワタシが使用しているは,6.7M。
ctags で作成すれば,倍くらいになるのではと予想。モナ王ですよね。


あー,あと考える必要があるのは,どうやってタグファイルを指定するかだよなぁ。
うーん,etags.el の様なインターフェイスでいいかな。
ま,大丈夫じゃん? という根拠なしの楽観視で行ってみますかね。
たくさん作って,たくさん失敗して,たくさん学習していけばいいと思う。
と自分へのエール。
つまり,下手な鉄砲も数打ちゃ当たる。ということですかな!
がはははっ!