neocomplcacheの補完機能がいいらしいという噂を聞きつけてやってみようとしたものの…
"std::"と打った時は補完されるのですが、"boost::"では補完が効かない。
clangを直接たたいた時は"boost::"でも補完が効くので困ってたり。
追記:一応動くようにできました。後半にどうしたかを書いておきます。(根本的解決ではないですが…)
さらに追記:根本的に解決しました。最後に追記しておきます。
以下が設定と実際に試してやってること。※以下の設定は間違っています
".vimrc " libclang を使用して高速に補完を行う let g:neocomplcache_clang_use_library=1 " clang.dll へのディレクトリパス let g:neocomplcache_clang_library_path='C:/llvm/bin' " clang のコマンドオプション let g:neocomplcache_clang_user_options ='-fms-extensions -fgnu-runtime -I C:/MinGW/lib/gcc/mingw32/4.5.2/include -I C:/mingwBoost/boost_1_47_0 ' " neocomplcache で表示される補完の数を増やす let g:neocomplcache_max_list=10000
// test.cpp #include <string> #include <boost/lexical_cast.hpp> int main() { int a = boost::lexical_cast<int>( "90" ); std::string s = boost:: // ここで補完したい return 0; }
動くようになりました。
いろいろ試してみたところ、"g:neocomplcache_clang_user_options"で設定したclangに渡されるべきオプションが全く使われていないようでした。
なのでデフォルトでboostのライブラリがインクルードされる状況にしてみたところ、できるようになりました。
他のライブラリなどもそうしないといけなくなるので今後も同じような課題にぶつかってしまいそうです。何かもっといい方法がありそうですが、"g:neocomplcache_clang_user_options"が使われるようにできる、もしくはそれ以外に何か方法があるのかもしれませんね。
追記:
私の根本的な勘違いだったようです…orz
clang_completeなどの設定と勘違いしていました。中途半端に動いていたので逆に混乱していましたが、昔いれたclang_completeが動いていたみたいです。
基本的にはhttps://github.com/Shougo/neocomplcacheに書かれているサンプルの設定ファイルの設定で動くみたいです。本当に人騒がせな…
@manga_osyoさんと@ShougoMatsuさんにはお世話になりました。いろいろ調べてもらった挙句、こんな結果だったとは。ヒドいですね。もう少しちゃんと自分で調べて対処できるようにしておかないといけないですね。