mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-03-13 02:05:40 +08:00
Fix repl cursor position (#3139)
This commit is contained in:
parent
bd73871f6c
commit
4c37a26095
@ -41,11 +41,22 @@ if exists('*nvim_win_set_cursor')
|
||||
function! s:self.set_cursor(winid, pos) abort
|
||||
return nvim_win_set_cursor(a:winid, a:pos)
|
||||
endfunction
|
||||
elseif exists('*win_execute')
|
||||
function! s:self.set_cursor(win, pos) abort
|
||||
" @fixme use g` to move to cursor line
|
||||
" this seem to be a bug of vim
|
||||
" https://github.com/vim/vim/issues/5022
|
||||
call win_execute(a:win, ':call cursor(' . a:pos[0] . ', ' . a:pos[1] . ')')
|
||||
" call win_execute(a:win, ':' . a:pos[0])
|
||||
call win_execute(a:win, ':normal! g"')
|
||||
endfunction
|
||||
elseif g:_spacevim_if_lua
|
||||
function! s:self.set_cursor(winid, pos) abort
|
||||
lua require("spacevim.api.vim.window").set_cursor(vim.eval("a:winid"), vim.eval("a:pos"))
|
||||
endfunction
|
||||
else
|
||||
function! s:self.set_cursor(winid, pos) abort
|
||||
endfunction
|
||||
endif
|
||||
|
||||
|
||||
|
@ -10,7 +10,6 @@ let s:JOB = SpaceVim#api#import('job')
|
||||
let s:BUFFER = SpaceVim#api#import('vim#buffer')
|
||||
let s:WINDOW = SpaceVim#api#import('vim#window')
|
||||
let s:STRING = SpaceVim#api#import('data#string')
|
||||
let s:VIM = SpaceVim#api#import('vim')
|
||||
|
||||
augroup spacevim_repl
|
||||
autocmd!
|
||||
@ -74,7 +73,7 @@ function! s:start(exe) abort
|
||||
let s:start_time = reltime()
|
||||
call s:open_windows()
|
||||
call s:BUFFER.buf_set_lines(s:bufnr, s:lines , s:lines + 3, 0, ['[REPL executable] ' . string(a:exe), '', repeat('-', 20)])
|
||||
call s:VIM.win_set_cursor(s:winid, [s:VIM.buf_line_count(s:bufnr), 1])
|
||||
call s:WINDOW.set_cursor(s:winid, [s:BUFFER.line_count(s:bufnr), 0])
|
||||
let s:lines += 3
|
||||
let s:_out_data = ['']
|
||||
let s:_current_line = ''
|
||||
@ -100,7 +99,7 @@ if has('nvim') && exists('*chanclose')
|
||||
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:VIM.win_set_cursor(s:winid, [s:VIM.buf_line_count(s:bufnr), 1])
|
||||
call s:WINDOW.set_cursor(s:winid, [s:BUFFER.line_count(s:bufnr), 0])
|
||||
endi
|
||||
call s:update_statusline()
|
||||
endif
|
||||
@ -110,7 +109,7 @@ if has('nvim') && exists('*chanclose')
|
||||
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:VIM.win_set_cursor(s:winid, [s:VIM.buf_line_count(s:bufnr), 1])
|
||||
call s:WINDOW.set_cursor(s:winid, [s:BUFFER.line_count(s:bufnr), 0])
|
||||
endi
|
||||
call s:update_statusline()
|
||||
endif
|
||||
@ -122,8 +121,8 @@ else
|
||||
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) + 1
|
||||
call s:VIM.win_set_cursor(s:winid, [s:VIM.buf_line_count(s:bufnr), 1])
|
||||
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
|
||||
|
@ -13,8 +13,8 @@ end
|
||||
function window.set_cursor(window_id, pos)
|
||||
local winindex = vim.eval("win_id2win(" .. window_id .. ")")
|
||||
local w = vim.window(winindex)
|
||||
w.line = pos[1]
|
||||
w.col = pos[2]
|
||||
w.line = pos[0]
|
||||
w.col = pos[1]
|
||||
end
|
||||
|
||||
function window.close(window_id)
|
||||
|
Loading…
x
Reference in New Issue
Block a user