@@ -205,7 +205,7 @@ function s:JobKill(job, sig)
205205 let map = {'int': 2, 'hup': 1, 'term': 15, 'kill': 9}
206206 let sig = get (map , sig, 15)
207207 endif
208- silent ! call luaeval (" vim.loop.kill(vim.fn.jobpid(_A), _B) " , [a: job , sig ])
208+ silent ! call luaeval (' vim.loop.kill(vim.fn.jobpid(_A[1] ), _A[2]) ' , [a: job , sig ])
209209 else
210210 call job_stop (a: job , a: sig )
211211 endif
@@ -258,9 +258,10 @@ function s:GetJobBufNr(job)
258258 endif
259259endfunc
260260
261- function s: NvimOut (id, data, event ) dict
262- if empty (a: data ) | return | endif
263- let b = self .buf
261+ function s: NvimOut (id, data, event )
262+ if empty (a: data ) || a: data == [' ' ] | return | endif
263+ let job = get (s: nvim_jobs , a: id , {})
264+ let b = get (job, ' buf' , -1 )
264265 if bufexists (b )
265266 let mod = getbufvar (b , ' &modifiable' )
266267 call setbufvar (b , ' &modifiable' , 1 )
@@ -273,12 +274,12 @@ function s:NvimOut(id, data, event) dict
273274 endif
274275 call setbufvar (b , ' &modifiable' , mod )
275276 endif
276- if has_key (self , ' callback' ) && ! empty (self .callback)
277- call call (self .callback, [a: id , ' ' ])
277+ if has_key (job , ' callback' ) && ! empty (job .callback)
278+ call call (job .callback, [a: id , ' ' ])
278279 endif
279280endfunc
280281
281- function s: NvimExit (id, status, event ) dict
282+ function s: NvimExit (id, status, event )
282283 if has_key (s: nvim_jobs , a: id )
283284 call remove (s: nvim_jobs , a: id )
284285 endif
@@ -290,9 +291,10 @@ function s:JobStartNvim(cmd, outb, ctxb, opts, inp)
290291 \ ' on_exit' : function (' s:NvimExit' ),
291292 \ ' on_stdout' : function (' s:NvimOut' ),
292293 \ ' on_stderr' : function (' s:NvimOut' ),
293- \ ' buf' : a: outb ,
294- \ ' callback' : get (a: opts , ' callback' , ' ' ),
295294 \ }
295+ if a: inp != ' '
296+ let job_opts.stdin = ' pipe'
297+ endif
296298 if has_key (a: opts , ' cwd' )
297299 let job_opts.cwd = a: opts .cwd
298300 endif
@@ -302,7 +304,10 @@ function s:JobStartNvim(cmd, outb, ctxb, opts, inp)
302304 if job <= 0
303305 return
304306 endif
305- let s: nvim_jobs [job] = job_opts
307+ let s: nvim_jobs [job] = {
308+ \ ' buf' : a: outb ,
309+ \ ' callback' : get (a: opts , ' callback' , ' ' ),
310+ \ }
306311 call s: Started (job, s: BufWin (a: outb ) != 0 ? a: outb : a: ctxb , a: cmd )
307312 if a: inp != ' '
308313 call chansend (job, a: inp )
@@ -877,7 +882,7 @@ endfunc
877882
878883function s: Scroll (topline)
879884 let v = winsaveview ()
880- v .topline = a: topline
885+ let v .topline = a: topline
881886 call winrestview (v )
882887endfunc
883888
@@ -924,8 +929,8 @@ function s:Layout(col)
924929 let s = float2nr (h / (n * (n > s: tops ? 1.75 : 1 )))
925930 endif
926931 call win_move_statusline (win_id2win (w ) - 1 , winheight (w ) - s )
927- h -= s
928- n -= 1
932+ let h -= s
933+ let n -= 1
929934 endfor
930935 call timer_start (0 , {_ - > s: Fit (a: col )})
931936endfunc
@@ -1402,4 +1407,4 @@ if s:ctrlexe != ''
14021407 \ })
14031408 endif
14041409 let $EDITOR = s: ctrlexe
1405- endif
1410+ endif
0 commit comments