読者です 読者をやめる 読者になる 読者になる

なぜ自動チェックが嫌いなのか

端的に言うと、自動的にチェッカが実行されている間は Vim への操作がブロックされてしまうから。

自動的に文法のチェックをするようなツールがある。 この手のツールでは Emacs の flymake がたぶん一番有名だけど、Vim にも似た機能をもつプラグインがある。 最近は Syntastic がかなり人気の様子。 デフォルトで多くのツールをサポートし、エラー箇所の表示もかっこいいっぽい。

Syntastic ではどのようにして自動的にチェックしているかというと、BufWritePost (や BufReadPost) のタイミングで文法チェッカを実行し、 結果を location-list に表示したり sign や balloon で強調したりしている。 ここで問題なのは、ファイルへの書き出しの後に文法チェッカが実行されている間は Vim への操作が完全にブロックされてしまう点だ。 ruby -wc のように主に動的型付けなスクリプト言語において本当に文法が正しいかどうかチェックする程度ならば一瞬でチェックが終了するけれども、 g++ -fsyntax-only とか ghc-mod check のようにちょっと一瞬で終わるとは言えないようなチェックが存在する。 そんなチェックをファイルへの書き出しの度に行って、しかもチェックしている間は操作がブロックされるというのはかなりイラつく。 正直、文法エラーを生じるようなプログラムなんてまず書かないし、文法チェック以上のチェック (lint とか型検査とか) こそが役に立つと思うんだけど、 そうなるとチェックに多少時間がかかるようになってブロックされることによるイライラが増す。

外部プロセスとの非同期的なやりとりは vimproc で達成できるので、さらに Vim に setTimeout 的なものがあるといいですね……
Issue #150: タイマーが欲しい · vim-jp/issues