Xeebi

home categories feeds

vim-watchdogs でエラーがなかった時に通知する

問題

vim-watchdogs は,vim-quickrun をバックエンドに用いた汎用的でカスタマイズ自在なシンタックスチェックプラグインです.紹介記事をいくつか挙げると

などがあります.

vimproc と併用すれば(大体任意のタイミングで)非同期に処理できるのが売りの一つですが,逆に非同期で処理してもらっていると,チェック中なのかエラーがなくて黙ってるのかわかりにくくなってしまいます.チェックが終わったらなにかしらの通知が欲しい.どうすればよいのでしょうか.

解決

vim-watchdogs が依存している shabadou.vim で定義された hook/echo/enable を使います.

次のような設定を加えてみます(g:quickrun_config["watchdogs_checker/_"] に何かしら入ってる場合はそれに加える感じでやってください).

let g:quickrun_config["watchdogs_checker/_"] = {
  \ "hook/echo/enable" : 1,
  \ "hook/echo/output_success": "> No Errors Found."
  \ }

これで :WatchdogsRun するとこのようになります.

vim-watchdogs-notify.png

エラーが見つかった時に何かしら echo してもらいたければ output_failure を使います.

簡単な解説

shabadou については shabadou.vim を使って quickrun.vim をカスタマイズしよう - C++でゲームプログラミング が参考になります.

平たくいえばこういう感じ(と理解している)

:h shabadow-hook/echo には次のようにあります.

- "echo"          *shabadou-hook/echo*
  設定された |quickrun-hook-point| にコマンド出力を行います。
  オプション ~
  output_{point}	デフォルト: ""
  {point} 時に設定した文字列をコマンド出力します。
Example >
  " コマンドの成功時に "success"
  " コマンドの失敗時に "failure"
  " を出力する
  :QuickRun
  \   -hook/echo/enable 1
  \   -hook/echo/output_success success
  \   -hook/echo/output_failure failure

まさに欲しいやつっぽい.めでたい.

他には?

基本的になんかしたいんだけどナーって時には先の作者の方による解説記事読んだり,そのの下の方に設定例があるのでそれぞれ眺めてみるとかすると良いと思います.

原理的には要するに quickrun でできることがひと通りできるはずで,時間のかかるチェックであればアニメーションも考慮にはいります.

昨日は VimConf2014 でしたが,その中の supermomonga さんの 発表 (かなりすごい)にあるような感じで喋らせるのも楽しいかもしれませんね(便利).