mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
fix(ui): ext_cmdline should not move cursor to curwin
Problem: The ext_cmdline cursor position on the screen seems to rely on an implicit assumption that the event listener implements a cmdline window that is made the current window which is problematic (e.g. breaks 'incsearch' in the actual current window). Solution: Remove this assumption and allow nvim_win_set_cursor() to move the cursor on the screen to a non-current window (previous commit).
This commit is contained in:
parent
c971f538ab
commit
d41b8d4758
@ -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;
|
||||
}
|
||||
|
@ -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