patch 8.1.1577: command line redrawn for +arabic without Arabic characters

Problem:    Command line redrawn for +arabic without Arabic characters.
            (Dominique Pelle)
Solution:   Check if there actually are any Arabic characters.  Do redraw
            after displaying incsearch. (closes #4569)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index c6d22e5..4514540 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -450,6 +450,7 @@
 #endif
     int		next_char;
     int		use_last_pat;
+    int		did_do_incsearch = is_state->did_incsearch;
 
     // Parsing range may already set the last search pattern.
     // NOTE: must call restore_last_search_pattern() before returning!
@@ -459,6 +460,9 @@
     {
 	restore_last_search_pattern();
 	finish_incsearch_highlighting(FALSE, is_state, TRUE);
+	if (did_do_incsearch && vpeekc() == NUL)
+	    // may have skipped a redraw, do it now
+	    redrawcmd();
 	return;
     }
 
@@ -776,6 +780,35 @@
 }
 #endif
 
+#ifdef FEAT_ARABIC
+/*
+ * Return TRUE if the command line has an Arabic character at or after "start"
+ * for "len" bytes.
+ */
+    static int
+cmdline_has_arabic(int start, int len)
+{
+    int	    j;
+    int	    mb_l;
+    int	    u8c;
+    char_u  *p;
+    int	    u8cc[MAX_MCO];
+
+    if (!enc_utf8)
+	return FALSE;
+
+    for (j = start; j < start + len; j += mb_l)
+    {
+	p = ccline.cmdbuff + j;
+	u8c = utfc_ptr2char_len(p, u8cc, start + len - j);
+	mb_l = utfc_ptr2len_len(p, start + len - j);
+	if (ARABIC_CHAR(u8c))
+	    return TRUE;
+    }
+    return FALSE;
+}
+#endif
+
     void
 cmdline_init(void)
 {
@@ -2366,7 +2399,8 @@
 #ifdef FEAT_RIGHTLEFT
 	if (cmdmsg_rl
 # ifdef FEAT_ARABIC
-		|| (p_arshape && !p_tbidi && enc_utf8)
+		|| (p_arshape && !p_tbidi
+				       && cmdline_has_arabic(0, ccline.cmdlen))
 # endif
 		)
 	    /* Always redraw the whole command line to fix shaping and
@@ -3164,7 +3198,7 @@
     else
 #endif
 #ifdef FEAT_ARABIC
-	if (p_arshape && !p_tbidi && enc_utf8 && len > 0)
+	if (p_arshape && !p_tbidi && cmdline_has_arabic(start, len))
     {
 	static int	buflen = 0;
 	char_u		*p;