vim-jp/issues — Issue #133: 非同期なsystem()はどうだろうか?
Author: koron
Created: 2012-01-19 02:39:21+00:00
State: open
Labels: discuss, new feature

背景。Vim自身に非同期に機能が欲しいが、スクリプト実行系のレベルにおいて今の構造では絶対に無理。server機能は環境によって使えなかったり、大仕掛けすぎるところもある。で、中間案としてsystem()の非同期版=asystem()を用意するというのはどうか。なおこのasystem()は以下のように段階的に実装すると良いかもしれない。

1. 実行したプログラムの終了を待って関数コールバックする
2. 実行したプログラムが標準出力を(一行)行う度に関数コールバックする

増やす関数はこんな感じだろうか?

* asystem({expr}, {callback_func}, {userdata}, [{callback_mode}]): returns task_id.
* asystem_send({task_id}, {expr}): send {expr} to stdin of the task.
* asystem_kill({task_id}): stop the task.

コールバックの引数はこんな感じを想定

* callback_func({task_id}, {userdata}, {expr}):

ご意見よろしく。