clang_complete を使用する場合の注意

最近 clang_complete を使う人が増えてきているようなのでちょっとした注意書き。
もしかしたらわたしの環境だけかも知れないので、他の方にも試して頂けると助かります。


さて、C++11 lambda expression が書かれているソースで clang_complete を使用すると Vim フリーズす場合があります。
また、Vim が正常に終了しなくなります。
原因はいくつか考えられますが、基本的に clang ではまだ lambda expression が対応していないのが主な原因だと思います。
(ここら辺、詳しくは調べていないので全く別の原因かも知れませんが。

[環境]

[再現コード]

namespace test{

int x = 0;

}  // namespace test

int
main(){
    auto f = []{};
    test::            // ←ここでコード補完
    return 0;
}

コード内に lambda expression がある

[症状]

  • 補完が終了しない
  • Vim が正常終了しなくなる
  • 補完時にたまにフリーズする

[対応策]

今のところ『lambda expression を書かない』って事ぐらいしか分かりませんね…。


と、いう感じで lambda expression を書くと危険かも知れないので注意して下さい。
多分、python の Thread 回りが怪しいと思うんですが…誰か python 分かる人が見てくれると嬉しいなー(/ω・\)チラッ