fix(edit): don't go to Terminal mode when stopping Insert mode (#27033)

This commit is contained in:
zeertzjq 2024-01-16 10:42:09 +08:00 committed by GitHub
parent a34451982f
commit 267e90f31d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View File

@ -402,7 +402,7 @@ static int insert_check(VimState *state)
Insstart_orig = Insstart;
}
if (curbuf->terminal) {
if (curbuf->terminal && !stop_insert_mode) {
// Exit Insert mode and go to Terminal mode.
stop_insert_mode = true;
restart_edit = 'I';

View File

@ -144,6 +144,15 @@ describe(':terminal', function()
eq({ blocking = false, mode = 't' }, api.nvim_get_mode())
eq({ 'InsertLeave', 'TermEnter' }, eval('g:events'))
end)
it('switching to terminal buffer immediately after :stopinsert #27031', function()
command('terminal')
command('vnew')
feed('i')
eq({ blocking = false, mode = 'i' }, api.nvim_get_mode())
command('stopinsert | wincmd p')
eq({ blocking = false, mode = 'nt' }, api.nvim_get_mode())
end)
end)
local function test_terminal_with_fake_shell(backslash)