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:
parent
f13b867b9b
commit
62de9d69a4
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user