1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-04-14 15:19:12 +08:00

Fix neovim repl support (#3831)

This commit is contained in:
Wang Shidong 2020-09-23 21:51:22 +08:00 committed by GitHub
parent f13b867b9b
commit 62de9d69a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -92,44 +92,16 @@ endfunction
" @vimlint(EVL103, 1, a:data)
" @vimlint(EVL103, 1, a:event)
if has('nvim') && exists('*chanclose')
function! s:on_stdout(job_id, data, event) abort
let s:_out_data[-1] .= a:data[0]
call extend(s:_out_data, a:data[1:])
if s:_out_data[-1] ==# '' && len(s:_out_data) > 1
if bufexists(s:bufnr)
call s:BUFFER.buf_set_lines(s:bufnr, s:lines , s:lines + 1, 0, map(s:_out_data[:-2], "substitute(v:val, ' $', '', 'g')"))
let s:lines += len(s:_out_data) - 1
if s:WINDOW.get_cursor(s:winid)[0] == s:BUFFER.line_count(s:bufnr) - len(s:_out_data) + 1
call s:WINDOW.set_cursor(s:winid, [s:BUFFER.line_count(s:bufnr), 0])
endi
call s:update_statusline()
endif
let s:_out_data = ['']
elseif s:_out_data[-1] !=# '' && len(s:_out_data) > 1
if bufexists(s:bufnr)
call s:BUFFER.buf_set_lines(s:bufnr, s:lines , s:lines + 1, 0, map(s:_out_data[:-2], "substitute(v:val, ' $', '', 'g')"))
let s:lines += len(s:_out_data) - 1
if s:WINDOW.get_cursor(s:winid)[0] == s:BUFFER.line_count(s:bufnr) - len(s:_out_data) + 1
call s:WINDOW.set_cursor(s:winid, [s:BUFFER.line_count(s:bufnr), 0])
endi
call s:update_statusline()
endif
let s:_out_data = [s:_out_data[-1]]
endif
endfunction
else
function! s:on_stdout(job_id, data, event) abort
if bufexists(s:bufnr)
call s:BUFFER.buf_set_lines(s:bufnr, s:lines , s:lines + 1, 0, a:data)
let s:lines += len(a:data)
if s:WINDOW.get_cursor(s:winid)[0] == s:BUFFER.line_count(s:bufnr) - len(a:data)
call s:WINDOW.set_cursor(s:winid, [s:BUFFER.line_count(s:bufnr), 0])
endi
call s:update_statusline()
endif
endfunction
endif
function! s:on_stdout(job_id, data, event) abort
if bufexists(s:bufnr)
call s:BUFFER.buf_set_lines(s:bufnr, s:lines , s:lines + 1, 0, a:data)
let s:lines += len(a:data)
if s:WINDOW.get_cursor(s:winid)[0] == s:BUFFER.line_count(s:bufnr) - len(a:data)
call s:WINDOW.set_cursor(s:winid, [s:BUFFER.line_count(s:bufnr), 0])
endi
call s:update_statusline()
endif
endfunction
function! s:on_stderr(job_id, data, event) abort
let s:status.has_errors = 1
@ -197,6 +169,10 @@ function! s:open_windows() abort
setlocal buftype=nofile bufhidden=wipe nobuflisted nolist noswapfile nowrap cursorline nospell nonu norelativenumber winfixheight nomodifiable
set filetype=SpaceVimREPL
nnoremap <silent><buffer> q :call <SID>close()<cr>
augroup spacevim_repl
autocmd!
autocmd BufWipeout <buffer> call <SID>close()
augroup END
let s:bufnr = bufnr('%')
let s:winid = win_getid(winnr())
wincmd p