vital.vim ProcessManager
vital.vimのProcessManagerについて書いてみます。
まだ使い始めたばかりなので、後々追記していきます。
ProcessManager
ujihisaさん作、vim業界を震撼させると言われているvitalモジュールです。
その名の通りプロセスを管理します。
基本的に上のリンクを見れば全て解決しますw
そもそも何も難しいことはなくて、プロセスを起動して、そのプロセスの標準入力に書き込んだり、出力を読んだりを簡単にさせてくれるというものです。
これ以上ないほどに簡潔でわかりやすいので、そもそも説明が不要かもしれません。
docの例を見るのが使い方を知る上では適切です。
関数
is_available()
ProcessManagerが使える環境であるかどうかを返します。(=vimprocが使える。ProcessManagerはvimprocに依存しています。)
touch(name, cmd)
nameで指定された名前のプロセスが既に存在していれば何もせず'existing'を返します。
存在していなければ、cmdのプロセスを起動して'new'を返します
new(cmd)
cmdのprocessを起動します。名前はauto_incrementな感じで割り振られるようです。
割り振られた名前を返します。
stop(i)
iで指定された名前のプロセスをkillします。
read(i, endpatterns)
read_wait(i, wait, endpatterns)
これについてはhttps://gist.github.com/ujihisa/5761509に説明があるのでそちらを見てもらったほうがいいです。
iで指定されたプロセスが起動していなければ、例外を投げます。
プロセスのstatusがinactiveな場合は、['','','inactive']を返します
そうでない場合、endpatternsにマッチするまで標準出力、標準エラー出力を読み込みます。
endpatternsにマッチしていないのに出力が全くない時間がwait秒経過すると、timedoutを返します。
write(i, str)
iで指定されたプロセスの標準入力にstrを書き込みます。
writeln(i, str)
iで指定されたプロセスの標準入力にstrと改行を書き込みます。
status(i)
iで指定された名前のプロセスの状態を返します。
プロセスが起動されていなければ例外を投げます。
プロセスが起動されていれば、activeであるかinactiveであるかを返します。
debug_processes()
起動されているプロセスを返します
使ってみよう
後でまた書く。blogではこういうの向いてないですね