\(・ω・\)SAN値!(/・ω・)/ピンチ!

この記事は Vim Advent Calendar 2012 133日目の記事になります。


と、いう事で quickrun.vimSAN値が下がるアニメーションをしてみました。
ついでに出力テキストに特定のワードがある場合に速度が変わるようにもしてみた。
error が出るたびに速度を早く出来ます。


[インストール]

NeoBundle "osyo-manga/quickrun-hook-santi_pinch"

[使い方]

" 上記の場合は、出力テキストに "warning" が含まれている分だけアニメーション速度が速くなる
" アニメーションの速度は &updatetime や runner/vimproc/updatetime に影響される
"
" santi   : 低いほどアニメーションが速くなる
" keyword : 出力するテキストに単語が含まれている回数分だけ santi が減る
" rate    : santi が減る割合
" min     : santi の最小値
"
" santi を下げる場合は下記のような outputter に buffered を含める必要がある
" buffered じゃなくて quickfix でも可
let g:quickrun_config = {
\   "_" : {
\       "hook/santi_pinch/santi" : 10,
\       "hook/santi_pinch/keyword" : "warning",
\       "hook/santi_pinch/rate" : 1.0,
\       "hook/santi_pinch/min" : 4,
\       "runner" : "vimproc",
\       "runner/vimproc/updatetime" : 60,
\       "runner/vimproc/sleep" : 10,
\       "outputter" : "multi:buffer:buffered",
\       "outputter/buffered/target" : "null"
\   }
\}


動的に速度を変更する為に出力テキストを取得する必要があるのでだいぶややこしい感じになっています。


なお、アニメーションするだけであれば shabadou.vim を使用して

call quickrun#module#register(s:make_quickrun_hook_anim(
\   "santi_pinch",
\   ['\(・ω・\) SAN値!', ' (/・ω・)/ピンチ!',],
\   12,
\), 1)

let g:quickrun_config = {
\   "_" : {
\       "hook/santi_pinch/enable" : 1,
\   }
\}


みたいな設定をするのが楽だと思います。