patch 9.0.0089: fuzzy argument completion doesn't work for shell commands

Problem:    Fuzzy argument completion doesn't work for shell commands.
Solution:   Check for cmdidx not being CMD_bang. (Yegappan Lakshmanan,
            closes #10769)
diff --git a/src/cmdexpand.c b/src/cmdexpand.c
index 28ecaed..793a104 100644
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -1305,8 +1305,10 @@
 	eap->cmdidx = excmd_get_cmdidx(cmd, len);
 
 	// User defined commands support alphanumeric characters.
-	// Also when doing fuzzy expansion, support alphanumeric characters.
-	if ((cmd[0] >= 'A' && cmd[0] <= 'Z') || (fuzzy && *p != NUL))
+	// Also when doing fuzzy expansion for non-shell commands, support
+	// alphanumeric characters.
+	if ((cmd[0] >= 'A' && cmd[0] <= 'Z')
+		|| (fuzzy && eap->cmdidx != CMD_bang && *p != NUL))
 	    while (ASCII_ISALNUM(*p) || *p == '*')	// Allow * wild card
 		++p;
     }