-> 08 { 07 / 29 }
errormarker.vim で flymake(Emacsの) る
id:antipop(Emacs厨)が flymake 便利すぎというか無い vim ってなんなの(笑)と行ってきたのでそれっぽいのを探したけど flymake.vim はちょっと違うんだよなぁ(quickfix厨)、まぁとりあえず保存時に f*ck してquickfix に自動表示でいいか、と思ったらあれなんか flymake(Emacsの)ぽい挙動を示してビビル!なんぞこれー、というわけで弊社vimチーム(俺motetnx)でチェックしたら
の errormarker.vim が QuickFixCmdPost にフックして、まんま flymake ぽい挙動をしてくれるという事が解った。quickfix 利用なためどんな言語からも使えるよ!errormarker++。ちなみに一年ぐらい前に割と便利げ(しかもtypo)と書いておきながら存在をすっかり忘れていたという。
ちなみに perl で errormarker.vim で flymake っぽく利用する設定。まず
$VIMRUNTIME/tools/efm_perl.pl
を適当にパスが通った場所にコピー。サンプルでは vimparse.pl という名前になってるのでリネームする。んで ~/.vim/ftplugin/perl/flyquickfixmake.vim に
setlocal makeprg=$HOME/bin/vimparse.pl\ -c\ %\ $* setlocal errorformat=%f:%l:%m setlocal shellpipe=2>&1\ > if !exists("g:perl_flyquickfixmake") let g:perl_flyquickfixmake = 1 au BufWritePost *.pm,*.pl,*.t silent make endif
とか書いておく。すると perl なファイルの保存時にエラー箇所をvim上でハイライトしてくれる。
<inc>最初の書き方だとperlなft開くたびにBufWritePost のフックに追加されてしまってたので変更。
おまけメモ・vim でフックされた関数の実態を探す方法(by motemen)。
:autocmd QuickFixCmdPost
でリスト表示。すると
--- Auto-Commands --- errormarker QuickFixCmdPost make call <SID>SetErrorMarkers()
それっぽいのが出てくる。次にその関数を verbose で調べる。
:99verbose function /SetError
function <SNR>50_SetErrorMarkers()
Last set from ~/svn/dotfiles/vim/.vim/plugin/errormarker.vim
で定義した vimscript が解る、と。

ちなみに vimparse.pl に「-c」オプションはいりませんか?
-c なしだと実行されてしまうようです。