diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-01-16 10:42:09 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-16 10:42:09 +0800 |
commit | 267e90f31d186cc06202f308e1a63fbcc6bbed2c (patch) | |
tree | bde7fcc1308098004691309ff4042f0330dbb7fc | |
parent | a34451982fe661fcfb6082607a8cf4c22ff51577 (diff) | |
download | rneovim-267e90f31d186cc06202f308e1a63fbcc6bbed2c.tar.gz rneovim-267e90f31d186cc06202f308e1a63fbcc6bbed2c.tar.bz2 rneovim-267e90f31d186cc06202f308e1a63fbcc6bbed2c.zip |
fix(edit): don't go to Terminal mode when stopping Insert mode (#27033)
-rw-r--r-- | src/nvim/edit.c | 2 | ||||
-rw-r--r-- | test/functional/terminal/ex_terminal_spec.lua | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c index 3006f423dc..470d57890a 100644 --- a/src/nvim/edit.c +++ b/src/nvim/edit.c @@ -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'; diff --git a/test/functional/terminal/ex_terminal_spec.lua b/test/functional/terminal/ex_terminal_spec.lua index 55ddfbab7b..0a1ba6d980 100644 --- a/test/functional/terminal/ex_terminal_spec.lua +++ b/test/functional/terminal/ex_terminal_spec.lua @@ -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) |