# HG changeset patch # User Bram Moolenaar # Date 1605386704 -3600 # Node ID be7f528380561c5fc88a15cd680aa102f4f7d850 # Parent 29eccb06e5a2d9e4fe1105c2aaa7834adca6e91a patch 8.2.1988: still in Insert mode when opening terminal popup Commit: https://github.com/vim/vim/commit/e41decc892a115335259096c3bc0204dd99b372b Author: Bram Moolenaar Date: Sat Nov 14 21:34:59 2020 +0100 patch 8.2.1988: still in Insert mode when opening terminal popup Problem: Still in Insert mode when opening terminal popup with a mapping in Insert mode. Solution: Exit Insert mode. (closes #7295) diff --git a/src/edit.c b/src/edit.c --- a/src/edit.c +++ b/src/edit.c @@ -1033,6 +1033,11 @@ doESCkey: case K_COMMAND: // command do_cmdline(NULL, getcmdkeycmd, NULL, 0); +#ifdef FEAT_TERMINAL + if (term_use_loop()) + // Started a terminal that gets the input, exit Insert mode. + goto doESCkey; +#endif break; case K_CURSORHOLD: // Didn't type something for a while. diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -1237,6 +1237,24 @@ func Test_terminal_popup_with_cmd() unlet s:winid endfunc +func Test_terminal_popup_insert_cmd() + CheckUnix + + inoremap call StartTermInPopup() + func StartTermInPopup() + call term_start(['/bin/sh', '-c', 'cat'], #{hidden: v:true})->popup_create(#{highlight: 'Pmenu'}) + endfunc + call feedkeys("i\") + sleep 10m + call assert_equal('n', mode()) + + call feedkeys("\", 'xt') + sleep 20m + call feedkeys(":q\", 'xt') + delfunc StartTermInPopup + iunmap +endfunc + func Check_dump01(off) call assert_equal('one two three four five', trim(getline(a:off + 1))) call assert_equal('~ Select Word', trim(getline(a:off + 7))) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1988, +/**/ 1987, /**/ 1986,