updated for version 7.3.946
Problem:    Sometimes get stuck in waiting for cursor position report,
            resulting in keys starting with <Esc>[ not working.
Solution:   Only wait for more characters after <Esc>[ if followed by '?', '>'
            or a digit.
diff --git a/src/term.c b/src/term.c
index 97bf62a..003dd8b 100644
--- a/src/term.c
+++ b/src/term.c
@@ -4126,9 +4126,11 @@
 	     *   The final byte is 'R'. now it is only used for checking for
 	     *   ambiguous-width character state.
 	     */
+	    p = tp[0] == CSI ? tp + 1 : tp + 2;
 	    if ((*T_CRV != NUL || *T_U7 != NUL)
 			&& ((tp[0] == ESC && tp[1] == '[' && len >= 3)
-			    || (tp[0] == CSI && len >= 2)))
+			    || (tp[0] == CSI && len >= 2))
+			&& (VIM_ISDIGIT(*p) || *p == '>' || *p == '?'))
 	    {
 		j = 0;
 		extra = 0;
@@ -4136,7 +4138,7 @@
 				&& !(tp[i] >= '{' && tp[i] <= '~')
 				&& !ASCII_ISALPHA(tp[i]); ++i)
 		    if (tp[i] == ';' && ++j == 1)
-			extra = atoi((char *)tp + i + 1);
+			extra = i + 1;
 		if (i == len)
 		    return -1;		/* not enough characters */
 
@@ -4150,6 +4152,8 @@
 # ifdef FEAT_AUTOCMD
 		    did_cursorhold = TRUE;
 # endif
+		    if (extra > 0)
+			extra = atoi((char *)tp + extra);
 		    if (extra == 2)
 			aw = "single";
 		    else if (extra == 3)
@@ -4178,6 +4182,8 @@
 		    /* rxvt sends its version number: "20703" is 2.7.3.
 		     * Ignore it for when the user has set 'term' to xterm,
 		     * even though it's an rxvt. */
+		    if (extra > 0)
+			extra = atoi((char *)tp + extra);
 		    if (extra > 20000)
 			extra = 0;
 
diff --git a/src/version.c b/src/version.c
index 76d6520..5e5dbc4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    946,
+/**/
     945,
 /**/
     944,