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

Neomake - 非同期実行のSyntastic

syntasticを使っていると大きなファイルでsyntax checkなどするとしばらく応答が返らないことがよくある。neovimには非同期でjobを実行する機能があり、それを活かしたpluginとしてNeomakeというsyntasticと同様の機能をもつものがあることを知ったので使ってみた

deinを使っていれば以下のような設定だけでOK

 [[plugins]]                               
 repo = 'neomake/neomake'                  
 hook_add = '''                            
 autocmd! BufWritePost * Neomake           
 '''                                       

ファイルを開いて最初にNeomakeを実行するときだけ一瞬固まるが、その後はNeomake実行時にもカーソルが動かせること確認できた
ちなみにvimでも動くが非同期実行はできない

デフォルトの設定ではerrorを見つけた際もlocation listが開かないので:lopenを使う
もしくは以下の設定を入れれば自動で開くようになる

let g:neomake_open_list = 2

syntasticと同じく、:NeomakeInfoで現在どのmakerが有効なのか確認できる(makerとはsyntasticで言うcheckerのこと)

また、makerのカスタマイズもsyntasticと同様の形でできる

"let g:neomake_{ filetype }_{ makername }_maker
let g:neomake_javascript_jshint_maker = {
    \ 'args': ['--verbose'],
    \ 'errorformat': '%A%f: line %l\, col %v\, %m \(%t%*\d\)',
    \ }
let g:neomake_javascript_enabled_makers = ['jshint']

errorを示すsignの変更も可能
もちろんwarningやinfoなども別々に可能

let g:neomake_error_sign = {
  \ 'text': 'E',
  \ 'texthl': 'ErrorMsg',
  \ }

詳しくはhelpで

参考