patch 9.0.0473: fullcommand() only works for the current script version

Problem:    fullcommand() only works for the current script version.
Solution:   Add an optional argument for the script version.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 0e5e1db..814f1b6 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4048,20 +4048,31 @@
     void
 f_fullcommand(typval_T *argvars, typval_T *rettv)
 {
-    exarg_T  ea;
-    char_u   *name;
-    char_u   *p;
+    exarg_T	ea;
+    char_u	*name;
+    char_u	*p;
+    int		vim9script = in_vim9script();
+    int		save_cmod_flags = cmdmod.cmod_flags;
 
     rettv->v_type = VAR_STRING;
     rettv->vval.v_string = NULL;
 
-    if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
+    if (in_vim9script()
+	    && (check_for_string_arg(argvars, 0) == FAIL
+		|| check_for_opt_bool_arg(argvars, 1) == FAIL))
 	return;
 
     name = argvars[0].vval.v_string;
     if (name == NULL)
 	return;
 
+    if (argvars[1].v_type != VAR_UNKNOWN)
+    {
+	vim9script = tv_get_bool(&argvars[1]);
+	cmdmod.cmod_flags &= ~(CMOD_VIM9CMD | CMOD_LEGACY);
+	cmdmod.cmod_flags |= vim9script ? CMOD_VIM9CMD : CMOD_LEGACY;
+    }
+
     while (*name == ':')
 	name++;
     name = skip_range(name, TRUE, NULL);
@@ -4069,10 +4080,13 @@
     ea.cmd = (*name == '2' || *name == '3') ? name + 1 : name;
     ea.cmdidx = (cmdidx_T)0;
     ea.addr_count = 0;
+    ++emsg_silent;  // don't complain about using "en" in Vim9 script
     p = find_ex_command(&ea, NULL, NULL, NULL);
+    --emsg_silent;
     if (p == NULL || ea.cmdidx == CMD_SIZE)
-	return;
-    if (in_vim9script())
+	goto theend;
+
+    if (vim9script)
     {
 	int	     res;
 
@@ -4081,12 +4095,14 @@
 	--emsg_silent;
 
 	if (res == FAIL)
-	    return;
+	    goto theend;
     }
 
     rettv->vval.v_string = vim_strsave(IS_USER_CMDIDX(ea.cmdidx)
 				 ? get_user_command_name(ea.useridx, ea.cmdidx)
 				 : cmdnames[ea.cmdidx].cmd_name);
+theend:
+    cmdmod.cmod_flags = save_cmod_flags;
 }
 #endif