vimでrubyのコードを保存した時に、シンタックスエラーをチェックして、エラーをハイライトする

vimrubyのコードを保存した際に、シンタックスチェックをしてくれるような設定を導入してみた。
これで、実行してみてシンタックスエラーじゃん、というのが減らせるようになった。


以下の設定を.vim/after/ftplugin/ruby.vimに記述。
(rubyのftpluginが発動した後に実行される)

function! s:ExecuteMake()
  if &filetype == 'ruby' && expand('%:t') !~? '^pry\d\{8}.\+\.rb'
    silent make! -c "%" | redraw!
  endif
endfunction

compiler ruby
augroup rbsytaxcheck
  autocmd! BufWritePost <buffer> call s:ExecuteMake()
augroup END


compiler rubyの指定で、makeコマンドでrubyシンタックスをチェックしてくれる。
こけたらquickfixに入るので、redrawを実行して、
エラーがある時だけquickfixが出るように設定している。


本来であれば、filetypeの検証は必要無いはずなのだが、
hamlを開いた時に何故か誤爆していたので、
ftpluginの後に実行しているのに、余計にfiletypeをチェックしている。
また、pryからeditで開いた一時ファイルをmakeでチェックすると、
やたらと重いので、pryの一時ファイルを外すために、ファイル名を軽くチェックしている。


この設定をしてから、errormarker.vimを導入すると、
vim-rubyがcompilerやerrorformatの設定を持っているおかげで、
保存時にシンタックスエラーがあれば、勝手にerrormarker.vimがハイライト表示してくれる。


利用イメージはこんな感じ。


参考にしたサイトはこちら。
Vimにソースコードの構文エラーを検出させたい(ただしRubyに限る) - idesaku blog