quickrun 後に元のバッファに戻る

前回、元のタブに戻る quickrun-hook を定義してみたんですが、どうせならウィンドウ、バッファにも戻ったほうがいいかなーってことでちと追記。

タブ→ウィンドウ→バッファ

の順で戻ります。

[ソース]

let s:hook = {
\   "name" : "back_buffer",
\   "kind" : "hook",
\   "config" : {
\       "enable" : 1,
\       "tabpagenr" : 0,
\       "winnr" : 0,
\       "bufnnr" : 0,
\   }
\}

function! s:hook.on_hook_loaded(session, context)
    let self.config.tabpagenr = tabpagenr()
    let self.config.winnr = winnr()
    let self.config.bufnr = bufnr("%")
endfunction

function! s:hook.on_finish(session, context)
    :execute "tabnext" self.config.tabpagenr
    :execute self.config.winnr . "wincmd w"
    :execute "buffer!" self.config.bufnr
endfunction

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


汎用性を考えると、それぞれ hook-back_tab、hook-back_window、hook-back_buffer みたいに定義したほうがいいと思うんですが、順番とか考えるとまとめてしまったほうが楽かなーって事で。