下林明正のブログ

個人的かつ雑多なブログです。

テストの実行時間が長いので、終わったら通知をするようにした

this.aereal.org

こういうやり方でVimからテストを実行してるけど、テストが終わるまでXX秒くらいかかってその間Vimは入力を受け付けないのでSlackなどを見がちで、いつになったら作業に戻れるのかよく分からないという問題がある。

ふと、テストが終わったら普通に通知すればいいじゃんと思ったので、そのようにした。

自分はmacOSを使っているので、これが使えそうだった。

github.com

適当に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

qiita.com

ふむふむ、試しに: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

などとするとやりたいことができた。良かったですね。