読者です 読者をやめる 読者になる 読者になる

凹みTips

C++、JavaScript、Unity、ガジェット等の Tips について雑多に書いています。

neocomplcache-clang_complete を利用してコード補完時間を booooooost!!! しないようにする

Linux Vim

(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: 追加し忘れていた会話を追記)

だったのですが、clang_complete を使えば非同期で処理してくれるとの情報が TL で流れて id:osyo-manga さんが以下のようなエントリを紹介してくれました。

やってみます(`・ω・´)

概要

強力な補完機能を持つ neocomplcache と clang_complete はそのままでは両立させることができません。が、それを実現してくれるのが neocomplcaceh-clang_complete なのです! (打つの疲れる…)

環境

導入手順

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

では使ってみます。

おぉ、Template Aliases 認識した!

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" 

これで完了。