mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -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;
|
switchwin_T switchwin;
|
||||||
switch_win(&switchwin, win, NULL, true);
|
switch_win(&switchwin, win, NULL, true);
|
||||||
update_topline(curwin);
|
update_topline(curwin);
|
||||||
validate_cursor(curwin);
|
setcursor_mayforce(true);
|
||||||
restore_win(&switchwin, true);
|
restore_win(&switchwin, true);
|
||||||
|
|
||||||
redraw_later(win, UPD_VALID);
|
redraw_later(win, UPD_VALID);
|
||||||
|
@ -767,7 +767,7 @@ static uint8_t *command_line_enter(int firstc, int count, int indent, bool clear
|
|||||||
}
|
}
|
||||||
|
|
||||||
setmouse();
|
setmouse();
|
||||||
ui_cursor_shape(); // may show different cursor shape
|
setcursor();
|
||||||
|
|
||||||
TryState tstate;
|
TryState tstate;
|
||||||
Error err = ERROR_INIT;
|
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();
|
may_trigger_modechanged();
|
||||||
setmouse();
|
setmouse();
|
||||||
ui_cursor_shape(); // may show different cursor shape
|
|
||||||
sb_text_end_cmdline();
|
sb_text_end_cmdline();
|
||||||
|
|
||||||
theend:
|
theend:
|
||||||
@ -3859,7 +3858,6 @@ void cursorcmd(void)
|
|||||||
if (ccline.redraw_state < kCmdRedrawPos) {
|
if (ccline.redraw_state < kCmdRedrawPos) {
|
||||||
ccline.redraw_state = kCmdRedrawPos;
|
ccline.redraw_state = kCmdRedrawPos;
|
||||||
}
|
}
|
||||||
setcursor();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4553,6 +4551,7 @@ static int open_cmdwin(void)
|
|||||||
State = save_State;
|
State = save_State;
|
||||||
may_trigger_modechanged();
|
may_trigger_modechanged();
|
||||||
setmouse();
|
setmouse();
|
||||||
|
setcursor();
|
||||||
|
|
||||||
return cmdwin_result;
|
return cmdwin_result;
|
||||||
}
|
}
|
||||||
|
@ -219,6 +219,21 @@ describe('API/win', function()
|
|||||||
|
|
||||||
-- curwin didn't change back
|
-- curwin didn't change back
|
||||||
neq(win, curwin())
|
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)
|
end)
|
||||||
|
|
||||||
it('remembers what column it wants to be in', function()
|
it('remembers what column it wants to be in', function()
|
||||||
|
@ -824,6 +824,29 @@ local function test_cmdline(linegrid)
|
|||||||
|
|
|
|
||||||
]])
|
]])
|
||||||
end)
|
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
|
end
|
||||||
|
|
||||||
-- the representation of cmdline and cmdline_block contents changed with ext_linegrid
|
-- the representation of cmdline and cmdline_block contents changed with ext_linegrid
|
||||||
|
Loading…
Reference in New Issue
Block a user