auto-complete-etags.el をちょびっと更新

どもです。
レジナが発芽したとか野菜栽培について色々アップしたいのですが,
得意技の先延ばし発動!

std::pair<std:: とかで補完を出すようにしました。

今までは,下記のような状況での補完は出てました。

std::map
   ^^^
   ここら辺で補完が出る。

けども,以下のようなのを書いていて,2つ目のダブルコロンを入力したときに,
補完が出ないのでちょっとくまってました。

std::pair<std::map< ...
             ^^^
             ここら辺で補完を出すようにする。

というわけで,重い腰と重い体を上げて,出るようにしました。
対症療法的だけど。


それから,以下のような場合も補完がでるようになりました。

std::map<int, int>::const_iterator
                  ^^^
                  ここら辺でも補完がでるはず。

まとめ

auto-complelte-etags.el がちょっぴり便利になりました。
こちらから。オリジナルのものより使いやすくなっていると思います。
https://github.com/whitypig/auto-complete-etags


やはり,c++-mode の場合は,「::」で補完がでるのは非常に便利だと実感。
ちなみに,TDD By Example を読んでいるくせに,テストを書いていないので,
自分で使いながらバグを修正していく予定です。
うわ〜,整ってないなぁ。

おまけ

以前から,etags ではなくて,ctags 用のタグファイルを使えば,
よりよい補完ができるのではないかと思っていたんですが,
誰かの日記にも,同様なことが書いてあったので,ctags.el を作ってくれると
密かに期待。


あと,2ch 経由でおもしろそうと思ったのは,imenu を情報源として,
補完するというアイデア。といっても,バッファ単位ではなくて,
プロジェクト単位とかで。


http://hibari.2ch.net/test/read.cgi/unix/1308635178/
から引用させてもらいます。

184 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2011/07/09(土) 01:38:49.17
imenuについて質問です。

emacsは NTEmacs23.3を使用。

c/c++用に導入したのですが、
imenuでリストアップされる補間対象が
1つのバッファ上のクラスメソッドだけになってしまいます。

やりたいことは以下のようなことです。

--buffer list--
src-code-A.cpp
src-code-A.hpp
src-code-B.cpp
src-code-B.hpp
以上のソースがバッファにオープンされており
ソースには名前どおりclass Aと class Bが定義されている

この状況でimenuを実行するとclass AメソッドとBメソッド全部がimenu一覧に表示される

とこうなってほしいのですが
実際はimenuを実行したカレントバッファのクラスメソッドしか表示されません。
理想としてはA,B両方のクラスメソッドが入ってほしいのですが・・。
情報自体はimenu--index-alistに保存されているので
imenu--index-alistに現在オープン中の全c/c++modeバッファのクラスメソッドを入れるような方法はありますか?

これが出来ると auto-complete.elの
ac-sources-imenuにより補間できて便利になるのですが・・。

以上よろしくです。


imenu の方の変数をいじくるよりも,自前で情報源を用意した方がよさそうだと
ワタシは根拠なしで思います。もしかしたら作るかも。

さらなるおまけ

小見出し記法で,「** std::pair