2008-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上でハイライトしてくれる。
最初の書き方だとperlなft開くたびにBufWritePost のフックに追加されてしまってたので変更。
おまけメモ・vim でフックされた関数の実態を探す方法(by motemen)。
:autocmd QuickFixCmdPost
でリスト表示。すると
--- Auto-Commands ---
errormarker QuickFixCmdPost
make call SetErrorMarkers()
それっぽいのが出てくる。次にその関数を verbose で調べる。
:99verbose function /SetError
function 50_SetErrorMarkers()
Last set from ~/svn/dotfiles/vim/.vim/plugin/errormarker.vim
で定義した vimscript が解る、と。
gitcore-tutorial 読書会\(^o^)/
んー。前半の object db 周りについては面白かったけど後半はさほど。fast forward merge が何者か解る(ただたんに commit id をマージ先と差し替えてるだけ)とか、merge の適用順序と 3-way merge が使われてるだとかその辺ぐらいかー。パブリッシュ方法なんかは別に知らなくても(今のままでも)なんら問題なかったかなー。