diff --git a/autoload/vivify.vim b/autoload/vivify.vim index 0e11f4b..6b75e69 100644 --- a/autoload/vivify.vim +++ b/autoload/vivify.vim @@ -4,16 +4,32 @@ let s:viv_url = 'http://localhost:' . ($VIV_PORT == '' ? '31622' : $VIV_PORT) " See here: https://stackoverflow.com/questions/74999614/difference-between-vims-job-start-function-and-neovims-jobstart-functi if has("nvim") let s:job_start = function("jobstart") + + " job is job_id as returned from jobstart() + function! s:stdin_send_and_close(job, data) + call chansend(a:job, a:data) + call chanclose(a:job, 'stdin') + endfunction else + " job is job object as returned from job_start() + function! s:stdin_send_and_close(job, data) + let l:channel = job_getchannel(a:job) + call ch_sendraw(l:channel, a:data) + call ch_close_in(l:channel) + endfunction + let s:job_start = function("job_start") endif function! s:post(data) - call s:job_start([ - \ 'curl', '-X', 'POST', '-H', 'Content-type: application/json', - \ '--data', json_encode(a:data), + let l:job = s:job_start([ + \ 'curl', + \ '-X', 'POST', + \ '-H', 'Content-type: application/json', + \ '--data', '@-', \ s:viv_url . '/viewer' . expand('%:p') \]) + call s:stdin_send_and_close(l:job, json_encode(a:data)) endfunction function! vivify#sync_content()