C++0x と遊ぶときのちょっとした

GCC 4.5.1 で結構色々と実際に使えるようになってきたこともあって,C++0x 向けにちょっとだけ Vim の設定を足した.まず static_assert, decltype をハイライトするように ~/.vim/after/syntax/cpp.vim

syntax keyword cppOperator static_assert decltype

と書いた.
副次的な効果として neocomplcache の syntax complete の候補にこれらが出るようになる.ただし neocomplcache は結果をキャッシュしているので,たぶんこの設定を行った後に一度 C++ のソースを開いているバッファ上で :NeoComplCacheCachingSyntax する必要がある. それと quickrun 向けに ~/.vimrc に

let g:quickrun_config.cpp = {'cmdopt': '{getline(1)=~?"c++0x"?"-std=c++0x ":""}-Wall -W'}

なかんじに書いた.
quickrun は cmdopt 等のいくつかのオプションの文字列を独自のフォーマットに従って解釈しており,例えば {} で囲まれたところは Vim の eval() によって評価される*1. ここではそれを利用してソースの1行目にコメントとして c++0x と書いておけば -std=c++0xコンパイルして実行するように設定した.

あと現状の syntax/cpp.vim だと C++0x の lambda がやや残念なことになるのでこれもなんとかしたいんだけど,インデントが崩壊するようなレベルではないので修正する労力に結果が見合わなそうでアレ…

*1:フォーマットについての詳細は :help quickrun-syntax-option