]> granicus.if.org Git - vim/commitdiff
patch 8.1.2261: with modifyOtherKeys set 'noesckeys' doesn't work v8.1.2261
authorBram Moolenaar <Bram@vim.org>
Wed, 6 Nov 2019 12:59:16 +0000 (13:59 +0100)
committerBram Moolenaar <Bram@vim.org>
Wed, 6 Nov 2019 12:59:16 +0000 (13:59 +0100)
Problem:    With modifyOtherKeys set 'noesckeys' doesn't work. (James McCoy)
Solution:   Disable modifyOtherKeys while in Insert mode when 'noesckeys' is
            set. (closes #5180)

src/edit.c
src/testdir/test_edit.vim
src/version.c

index 4cbfc773b31d049ded2df0a75b18393987b0fe9a..7786528d4b1b8f040ae1931f5e9385b42647b219 100644 (file)
@@ -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
index 6ee5848109160ce15f4ace873bd1dcc7973f2002..18846f6ef04648c8eaa914b237298a325133783e 100644 (file)
@@ -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
index 4fd069488af5b82f5b226ca69b1a2058d6722615..4ae3f0e49f3311a4f623167028209515e5687d38 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2261,
 /**/
     2260,
 /**/