quickrun.vim 0.6.0


と、いうことで近々 quickrun.vim 0.6.0 がリリース予定ということなので先取りして遊んでみました。
また、quickrun.vim 0.6.0 に移行するにあたっていくつか破壊的な変更が行われているので、上記のサイトで確認して下さい。


そんなわけで 0.6.0 から新しく追加された hook 機能を使用して、
出力するデータが無ければ出力バッファを自動的に削除する
という機能を追加してみました。

[ソース]

"unite-hook-exit_empty_data_close_buffer {{{
let s:hook = {
\    "name" : "exit_empty_data_close_buffer",
\    "kind" : "hook",
\    "is_empty_data" : 1
\}


function! s:hook.on_output(session, context)
    let self.is_empty_data = self.is_empty_data ? empty(a:context.data) : 0
endfunction

function! s:hook.on_exit(session, context)
    if self.is_empty_data
        try
            bwipeout! [quickrun
        catch
        endtry
    endif
endfunction

call quickrun#module#register(s:hook, 1)
unlet s:hook
" }}}

こんな感じ。
上記のコードであれば自動的に hook が行われるので特に :QuickRun コマンドや quickrun_config にオプションを追加する必要はありません。
(もちろん、明示的に hook するように設定することも出来ます。
hook を使用すればいままで無理やり outputter で使用していたことが比較的簡単に実現することが出来るので楽ですね。
もうちょっといろいろと試してみたいところ。