mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
Merge pull request #27858 from luukvbaal/nvim_set_cursor
fix(ui): issues controlling cursor position with ext_cmdline
This commit is contained in:
commit
f1c9228bba
@ -148,7 +148,7 @@ void nvim_win_set_cursor(Window window, ArrayOf(Integer, 2) pos, Error *err)
|
||||
switchwin_T switchwin;
|
||||
switch_win(&switchwin, win, NULL, true);
|
||||
update_topline(curwin);
|
||||
validate_cursor(curwin);
|
||||
setcursor_mayforce(true);
|
||||
restore_win(&switchwin, true);
|
||||
|
||||
redraw_later(win, UPD_VALID);
|
||||
|
@ -767,7 +767,7 @@ static uint8_t *command_line_enter(int firstc, int count, int indent, bool clear
|
||||
}
|
||||
|
||||
setmouse();
|
||||
ui_cursor_shape(); // may show different cursor shape
|
||||
setcursor();
|
||||
|
||||
TryState tstate;
|
||||
Error err = ERROR_INIT;
|
||||
@ -927,7 +927,6 @@ static uint8_t *command_line_enter(int firstc, int count, int indent, bool clear
|
||||
}
|
||||
may_trigger_modechanged();
|
||||
setmouse();
|
||||
ui_cursor_shape(); // may show different cursor shape
|
||||
sb_text_end_cmdline();
|
||||
|
||||
theend:
|
||||
@ -3859,7 +3858,6 @@ void cursorcmd(void)
|
||||
if (ccline.redraw_state < kCmdRedrawPos) {
|
||||
ccline.redraw_state = kCmdRedrawPos;
|
||||
}
|
||||
setcursor();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -4553,6 +4551,7 @@ static int open_cmdwin(void)
|
||||
State = save_State;
|
||||
may_trigger_modechanged();
|
||||
setmouse();
|
||||
setcursor();
|
||||
|
||||
return cmdwin_result;
|
||||
}
|
||||
|
@ -219,6 +219,21 @@ describe('API/win', function()
|
||||
|
||||
-- curwin didn't change back
|
||||
neq(win, curwin())
|
||||
|
||||
-- shows updated position after getchar() #20793
|
||||
feed(':call getchar()<CR>')
|
||||
api.nvim_win_set_cursor(win, { 1, 5 })
|
||||
screen:expect {
|
||||
grid = [[
|
||||
|
|
||||
{1:~ }|*2
|
||||
{2:[No Name] }|
|
||||
prolo^gue |
|
||||
|*2
|
||||
{3:[No Name] [+] }|
|
||||
:call getchar() |
|
||||
]],
|
||||
}
|
||||
end)
|
||||
|
||||
it('remembers what column it wants to be in', function()
|
||||
|
@ -824,6 +824,29 @@ local function test_cmdline(linegrid)
|
||||
|
|
||||
]])
|
||||
end)
|
||||
|
||||
it('does not move cursor to curwin #20309', function()
|
||||
local win = api.nvim_get_current_win()
|
||||
command('norm icmdlinewin')
|
||||
command('new')
|
||||
command('norm icurwin')
|
||||
feed(':')
|
||||
api.nvim_win_set_cursor(win, { 1, 7 })
|
||||
screen:expect {
|
||||
grid = [[
|
||||
curwin |
|
||||
{3:[No Name] [+] }|
|
||||
cmdline^win |
|
||||
{2:[No Name] [+] }|
|
||||
|
|
||||
]],
|
||||
cmdline = { {
|
||||
content = { { '' } },
|
||||
firstc = ':',
|
||||
pos = 0,
|
||||
} },
|
||||
}
|
||||
end)
|
||||
end
|
||||
|
||||
-- the representation of cmdline and cmdline_block contents changed with ext_linegrid
|
||||
|
Loading…
Reference in New Issue
Block a user