patch 8.1.2261: with modifyOtherKeys set 'noesckeys' doesn't work

Problem:    With modifyOtherKeys set 'noesckeys' doesn't work. (James McCoy)
Solution:   Disable modifyOtherKeys while in Insert mode when 'noesckeys' is
            set. (closes #5180)
diff --git a/src/edit.c b/src/edit.c
index 4cbfc77..7786528 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -323,10 +323,16 @@
     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 @@
 
     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 @@
     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 6ee5848..18846f6 100644
--- a/src/testdir/test_edit.vim
+++ b/src/testdir/test_edit.vim
@@ -1495,3 +1495,22 @@
   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 4fd0694..4ae3f0e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2261,
+/**/
     2260,
 /**/
     2259,