diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-11-06 13:59:16 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-11-06 13:59:16 +0100 |
commit | 177c9f2f06b048f4c1e154d29423edf65b128f8c (patch) | |
tree | 4443782218352de1bf06af4273647e1228de87cb | |
parent | 36ec6f6953043270630159a61438ce558552fe3a (diff) | |
download | vim-git-177c9f2f06b048f4c1e154d29423edf65b128f8c.tar.gz |
patch 8.1.2261: with modifyOtherKeys set 'noesckeys' doesn't workv8.1.2261
Problem: With modifyOtherKeys set 'noesckeys' doesn't work. (James McCoy)
Solution: Disable modifyOtherKeys while in Insert mode when 'noesckeys' is
set. (closes #5180)
-rw-r--r-- | src/edit.c | 21 | ||||
-rw-r--r-- | src/testdir/test_edit.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 37 insertions, 5 deletions
diff --git a/src/edit.c b/src/edit.c index 4cbfc773b..7786528d4 100644 --- a/src/edit.c +++ b/src/edit.c @@ -323,10 +323,16 @@ edit( revins_scol = -1; #endif if (!p_ek) - /* Disable bracketed paste mode, we won't recognize the escape - * sequences. */ + { + // Disable bracketed paste mode, we won't recognize the escape + // sequences. out_str(T_BD); + // Disable modifyOtherKeys, keys with modifiers would cause exiting + // Insert mode. + out_str(T_CTE); + } + /* * Handle restarting Insert mode. * Don't do this for "CTRL-O ." (repeat an insert): In that case we get @@ -4220,12 +4226,17 @@ ins_esc( setmouse(); #ifdef CURSOR_SHAPE - ui_cursor_shape(); /* may show different cursor shape */ + ui_cursor_shape(); // may show different cursor shape #endif if (!p_ek) - /* Re-enable bracketed paste mode. */ + { + // Re-enable bracketed paste mode. out_str(T_BE); + // Re-enable modifyOtherKeys. + out_str(T_CTI); + } + // When recording or for CTRL-O, need to display the new mode. // Otherwise remove the mode message. if (reg_recording != 0 || restart_edit != NUL) @@ -4233,7 +4244,7 @@ ins_esc( else if (p_smd && (got_int || !skip_showmode())) msg(""); - return TRUE; /* exit Insert mode */ + return TRUE; // exit Insert mode } #ifdef FEAT_RIGHTLEFT diff --git a/src/testdir/test_edit.vim b/src/testdir/test_edit.vim index 6ee584810..18846f6ef 100644 --- a/src/testdir/test_edit.vim +++ b/src/testdir/test_edit.vim @@ -1495,3 +1495,22 @@ func Test_edit_startinsert() set backspace& bwipe! endfunc + +func Test_edit_noesckeys() + new + + " <Left> moves cursor when 'esckeys' is set + exe "set t_kl=\<Esc>OD" + set esckeys + call feedkeys("axyz\<Esc>ODX", "xt") + call assert_equal("xyXz", getline(1)) + + " <Left> exits Insert mode when 'esckeys' is off + set noesckeys + call setline(1, '') + call feedkeys("axyz\<Esc>ODX", "xt") + call assert_equal(["DX", "xyz"], getline(1, 2)) + + bwipe! + set esckeys +endfunc diff --git a/src/version.c b/src/version.c index 4fd069488..4ae3f0e49 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2261, +/**/ 2260, /**/ 2259, |