diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-04-17 11:59:50 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-04-18 16:11:59 -0300 |
commit | 9acb9607134a461fc342f29a098b83b1bad7134d (patch) | |
tree | 155980a8550ca2e4243e4612129a2cdd3fad499a /src/memory.c | |
parent | 350144f5113e111fea0d5b33589d6d478280f298 (diff) | |
download | rneovim-9acb9607134a461fc342f29a098b83b1bad7134d.tar.gz rneovim-9acb9607134a461fc342f29a098b83b1bad7134d.tar.bz2 rneovim-9acb9607134a461fc342f29a098b83b1bad7134d.zip |
Refactor job control to use RStream events
Instead of a single 'job read' callback, job control consumers need to provide
callbacks for "stdout read", "stderr read" and "exit". For vimscript, the
JobActivity autocommand is still used to handle every job event, for example:
```vim
:let srv1_id = jobstart('netcat-server-1', 'nc', ['-l', '9991'])
:let srv2_id = jobstart('netcat-server-2', 'nc', ['-l', '9991'])
function JobEvent()
" v:job_data[0] = the job id
" v:job_data[1] = the event type, one of "stdout", "stderr" or "exit"
" v:job_data[2] = data read from stdout or stderr
if v:job_data[1] == 'stdout'
let str = 'Message from job '.v:job_data[0].': '.v:job_data[2]
elseif v:job_data[1] == 'stderr'
let str = 'Error message from job '.v:job_data[0].': '.v:job_data[2]
else
" Exit
let str = 'Job '.v:job_data[0].' exited'
endif
call append(line('$'), str)
endfunction
au JobActivity netcat-server-* call JobEvent()
```
And to see messages from 'job 1', run in another terminal:
```sh
bash -c "while true; do echo 123; sleep 1; done" | nc localhost 9991
```
Diffstat (limited to 'src/memory.c')
0 files changed, 0 insertions, 0 deletions