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

C/C++ で予約済み識別子をシンタックスハイライトするプラグインつくった

C++ Vim

他人の書いた C/C++ のコードを見ているとあまりにも予約済み識別子を無視してコードを書いているものが多いので、ついカッとなってつくった。

プラグイン

NeoBundle 'osyo-manga/vim-cpp-syntax-reserved_identifiers'

また、デフォルトでは WarningMsg のハイライトを使用します。
任意のハイライト色にしたい場合は、

" ErrorMsg を任意のグループに置き換える
highlight link cReservedIdentifiers ErrorMsg

みたいな設定で変更できます。

『グローバルスコープを持ち、_ で始まる名前』のハイライトを無効にする

予約済み識別子の条件の一つに

  • グローバルスコープを持ち、_ で始まる名前

というのがあるんですが Vim で『グローバルスコープ』という条件付けを行うのは無理なので単純に

  • _ で始まる名前

をハイライトするようにしています。
なので以下のようなコードもハイライトされます。

こういうコードをハイライトしてほしくない場合は、予め

let g:c_no_reserved_identifiers_start_underbar_lower_case=1

と、いうような設定をしておくことで

  • _ + 小文字で始まる名前

のハイライトを無効にできます。
何気に syntax 系のプラグインをつくったのは初めてなので問題や要望があれば Issues までお願いします。

[おまけ]

ちなみに当然ではありますが、予約済み識別子をガシガシ使ってる標準ライブラリのコードももちろんハイライトされます。

https://i.gyazo.com/c08f7bd98edcf29740b3729b0621a96d.png

まぁこれはしょうがないか…。