Vim Advent Calendar 88日目: 誤った goto 文で到達しないコード箇所を直ちに検知する方法
この記事は Vim Advent Calendar 2013 88日目の記事になります。
- 元ネタ
それ、Vim で。
と、いう事でやってみました。
[必要なプラグイン]
- Shougo/vimproc.vim
- コマンドを非同期で実行する
- osyo-manga/vim-watchdogs
- シンタックスチェックを行う
- jceb/vim-hier
- エラー箇所を波線でハイライトする
- dannyob/quickfixstatus
- カーソル位置のエラー内容をコマンドラインに出力する
- thinca/vim-quickrun
- watchdogs.vim のバックエンド
- osyo-manga/shabadou.vim
- quickrun.vim の hook 拡張
NeoBundle "Shougo/vimproc.vim" NeoBundle "thinca/vim-quickrun" NeoBundle "osyo-manga/vim-watchdogs" NeoBundle "osyo-manga/shabadou.vim" NeoBundle "jceb/vim-hier" NeoBundle "dannyob/quickfixstatus"
[設定]
" quickrun.vim の設定 " * vimproc で非同期でコマンドを実行する " * シンタックスチェック時に quickfix ウィンドウを開かないようにする " * シンタックスチェッカーを clang++ に設定 " * シンタックスチェッカー clang++ にオプションを追加 let g:quickrun_config = { \ "_" : { \ "runner/vimproc/updatetime" : 500, \ "runner/vimproc/sleep" : 10, \ }, \ "watchdogs_checker/_" : { \ "outputter/quickfix/open_cmd" : "", \ }, \ "cpp/watchdogs_checker" : { \ "type" : "watchdogs_checker/clang++", \ }, \ "watchdogs_checker/clang++" : { \ "cmdopt" : "-Wall -Wunreachable-code", \ }, \} " ファイルの書き込み時にシンタックスチェックを行う let g:watchdogs_check_BufWritePost_enable = 1
件の問題を検知する場合、コマンドオプションに -Wunreachable-code を追加すればよいみたいなので watchdogs.vim に設定を追加しています。
Vim にもオーバーレイを行う機能がほしいのぉ。