quickrun の outputter を自分好みに拡張してみた
quickrun には、すでに便利な outputter がいくつが用意されているんですが、細かく設定したい場合、既存の outputter を拡張した方が楽かなー、と思い書いてみました。
既存のものを拡張するだけなので割と簡単ですね。
[オレオレ outputter]
" :QuickRun -outputter my_outputter " プロセスの実行中は、buffer に出力し、 " プロセスが終了したら、quickfix へ出力を行う " 既存の outputter をコピーして拡張 let my_outputter = quickrun#outputter#multi#new() let my_outputter.config.targets = ["buffer", "quickfix"] function! my_outputter.init(session) " quickfix を閉じる :cclose " 元の処理を呼び出す call call(quickrun#outputter#multi#new().init, [a:session], self) endfunction function! my_outputter.finish(session) call call(quickrun#outputter#multi#new().finish, [a:session], self) " 出力バッファの削除 bwipeout [quickrun " vim-hier を使用している場合は、ハイライトを更新したりとか " :HierUpdate endfunction " quickrun に outputter を登録 call quickrun#register_outputter("my_outputter", my_outputter)
こんな感じ。
「コンパイル中は buffer にリアルタイムに出力して、最終的に quickfix に出力されたら便利じゃなイカ?」
って事をつぶやいたら、id:thinca さんに、
:Quickrun -outputter multi:buffer:quickfix
を教えてもらって、それを使用していたんですが、それだと
「buffer と quickfix の両方が表示されてちょっとややこしいよねー」
って事で上記のような設定になりました。
まぁ各々のウィンドウを任意のタイミングで削除しているだけの拡張ですね。
しかし、相変わらず Vim のバッファやウィンドウの扱いが分からないなぁ……。
とりあえず、これで、
という問題も一気に解決されてかなり満足。
うむ、素晴らしい!