こういうやり方でVimからテストを実行してるけど、テストが終わるまでXX秒くらいかかってその間Vimは入力を受け付けないのでSlackなどを見がちで、いつになったら作業に戻れるのかよく分からないという問題がある。
ふと、テストが終わったら普通に通知すればいいじゃんと思ったので、そのようにした。
自分はmacOSを使っているので、これが使えそうだった。
適当にbrew installしてterminal-notifier -message hoge
などで通知が出ることを確認、使えそう。
Vimから外部コマンドを呼ぶにはどうしたらいいのか?
そのため、Vimでは外部コマンドを利用するための手段が別途用意されています。 Vim scriptを書く際には以下の機能を利用することになると思います。 http://vim-jp.org/vimdoc-ja/eval.html#system() http://vim-jp.org/vimdoc-ja/channel.html#job
ふむふむ、試しに:call system('terminal-notifier -message "Test Finished!"')
などとしてみると確かに通知が出るし、入力待ちになったりもしないので良さそう。
というわけで最終的には.vimrcで
function! s:prove_this() let func_name = cfi#format('%s', '') if func_name == '' QuickRun prove/carton else execute 'QuickRun prove/carton/contextual -args ' . func_name endif call system('terminal-notifier -message "Test Finished!"') endfunction
などとするとやりたいことができた。良かったですね。