(2012/01/02 補足)
勘違いしていたようですが、neocomplcache-clang と clang_complete の補間自体は libclang に頼っているので掛かる時間は変わりません。ただ clang_complete の方は入力を受け付けると補間の計算をやめるため、体感的に「速く感じる」というものらしいです。
(neocomplcache-clang と complete_clang の速度を比較してみた - 凹みTips参照)
はじめに
neocomplcache-clang を使うと、vim に簡単に C++ 補完機能を搭載させることができます。しかしながら Boost を使うと補完に要する時間が Boooooooost!! してしまいます。これについて作者の Shougo さんにご返答をいただきました。
(2012/01/02: 追加し忘れていた会話を追記)
んー、neocomplcache-clang で補完にかかる時間が booooooooost!!! してるなぁ。
@hecomi はい。Boostを使うと、補完がBooost!!!!します。これはVisual Studioでも時間がかかるでしょうし、C++のテンプレート自体が(ryなため仕様です。
2012-01-01 09:58:55 via web to @hecomi
@ShougoMatsu MSVC のインテリセンスだと情報収集中には「候補が表示されない」という挙動に対して、neocomplcache-clang では候補を表示するまでに「しばらく止まる」という挙動になってしまう気がします。これは設定で対応できますでしょうか?
2012-01-01 10:44:23 via TweetDeck to @ShougoMatsu
@hecomi Vimの最近の更新で、対応できるかと思ったのですが、それでもやはり問題があるのでそのままになっています。
2012-01-01 10:46:15 via web to @hecomi
@hecomi できません。なぜなら、neocomplcacheは非同期の候補収集に対応していないためです。
2012-01-01 10:45:42 via web to @hecomi
@ShougoMatsu なるほど。次の更新に期待します! それまでは PC のスペックを上げる方向で対応したいと思います。
2012-01-01 10:47:48 via TweetDeck to @ShougoMatsu
@hecomi どちらかというとVim本体の問題で、確かパッチは作られていると思いますが、まだ取り込まれていないので今のところ無理です。
2012-01-01 10:49:10 via web to @hecomi
だったのですが、clang_complete を使えば非同期で処理してくれるとの情報が TL で流れて id:osyo-manga さんが以下のようなエントリを紹介してくれました。
@ShougoMatsu 一応こんなものを。 URL
2012-01-01 10:53:58 via web to @ShougoMatsu
TL の流れを見るに、おしょーさんの neocomplcache-clang_complete を入れれば clang 3.0 がサクッと入る Ubuntu ならば問題なし、という感じなんだろうか。
@hecomi とりあえず、使ってみればいいんじゃないでしょうか!(訳:WIndows 以外でもテストして欲しい。
2012-01-01 11:16:38 via web to @hecomi
やってみます(`・ω・´)
概要
強力な補完機能を持つ neocomplcache と clang_complete はそのままでは両立させることができません。が、それを実現してくれるのが neocomplcaceh-clang_complete なのです! (打つの疲れる…)
環境
- Ubuntu 11.10
- clang 3.0
導入手順
libclang.so が必要なのですが、これについては neocomplcache-clang の導入手順を紹介した d:id:hecomi:20111231 に譲ります。このエントリでは libclang.so はあることを前提として、clang_complete と neocomplcache を両立させることを目的にします。
clang_complete の導入
git clone するなり neobundle.vim 使うなりしてインストールしてください。
neocomplcache-clang をインストールしている場合は、悲しいですがここでお別れすることにします(:NeoBundleClean)。
clang_complete の設定を .vimrc に付記します。
let g:clang_complete_auto = 1 let g:clang_use_library = 1 let g:clang_library_path = '/usr/share/clang' let g:clang_user_options = '2>/dev/null || exit 0"'
libclang.so の場所を g:clang_library_path に記述しますが、これは前回のエントリ(d:id:hecomi:20111231)を参照してください。
neocomplcache を ON にしておくと、設定がかち合ってしまうので OFF にして実行してみます。
"let g:neocomplcache_enable_at_startup = 1
neocomplcache-clang_complete の導入
さて、先程 neocomplcache を OFF にしてしまったので、ちょっと残念になってしまった補完機能を元通りにしましょう。
neocomplcache-clang_complete をインストール。続いて .vimrc を編集。
" add neocomplcache option let g:neocomplcache_force_overwrite_completefunc=1 " add clang_complete option let g:clang_complete_auto=1
OK ですね! neocomplcache の補完も効いてます。
素晴らしい。
おまけ : clang 3.0 の導入
libclang.so があれば要らないですが、コマンドラインから clang 3.0 を試せるように導入方法を付記しておきます。
上記 URL から、 Clang Binaries for Ubuntu-11.10/x86 を選択してダウンロードします。そして解凍・配置。
$ tar xzvf clang+llvm-3.0-i386-linux-Ubuntu-11_10.tar.gz $ sudo mkdir /usr/local/clang-3.0 $ sudo mv clang+llvm-3.0-i386-linux-Ubuntu-11_10/* /usr/local/clang-3.0
.bashrc に下記内容を追記。
export PATH=/usr/local/clang-3.0/bin:"$PATH"
これで完了。