summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-06 13:59:16 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-06 13:59:16 +0100
commit177c9f2f06b048f4c1e154d29423edf65b128f8c (patch)
tree4443782218352de1bf06af4273647e1228de87cb
parent36ec6f6953043270630159a61438ce558552fe3a (diff)
downloadvim-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.c21
-rw-r--r--src/testdir/test_edit.vim19
-rw-r--r--src/version.c2
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,