runtime(openPlugin): fix E480 when opening URLs with wildcards on Windows

This might be a bug in Windows Vim, as when using the following command
it throws E480:
```
:com! -complete=file -nargs=1 :Echo echo <q-args>
:Echo ?
E480: No match ?
```

Work-around this by using `-nargs=*` to allow more arguments, even
though this is not completely correct.

fixes: #17029

Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 7ea768a..170d2d0 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 9.1.  Last change: 2025 Mar 30
+*eval.txt*	For Vim version 9.1.  Last change: 2025 Apr 02
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -5149,7 +5149,7 @@
 	filetype	string
 	executable	string
 
-						      *dist#vim9#Open()* *:Open*
+					*dist#vim9#Open()* *:Open* *:URLOpen*
 						      *g:Openprg* *gx*
 dist#vim9#Open(file: string) ~
 
@@ -5157,6 +5157,8 @@
 `explorer.exe`, Linux `xdg-open`, …). If the variable |g:Openprg| exists the
 string specified in the variable is used instead.
 
+The |:Open| user command uses file completion for its argument.
+
 This function is by default called using the gx mapping.  In visual mode
 tries to open the visually selected text.
 
@@ -5175,13 +5177,18 @@
 	:call dist#vim9#Open(<path>)
 	:Open <path>
 <
+							*package-open*
+The |:Open| and |:Launch| command are provided by the included plugin
+$VIMRUNTIME/plugin/openPlugin.vim
 
-						  *dist#vim9#Launch()* *:Launch*
+						*dist#vim9#Launch()* *:Launch*
 dist#vim9#Launch(file: string) ~
 
 Launches <args> with the appropriate system programs. Intended for launching
 GUI programs within Vim.
 
+The |:Launch| user command uses shell completion for its first argument.
+
 NOTE: escaping of <args> is left to the user
 
 Examples: >vim
diff --git a/runtime/doc/tags b/runtime/doc/tags
index fa47092..acb2251 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2188,6 +2188,7 @@
 :TermdebugCommand	terminal.txt	/*:TermdebugCommand*
 :Texplore	pi_netrw.txt	/*:Texplore*
 :Tutor	pi_tutor.txt	/*:Tutor*
+:URLOpen	eval.txt	/*:URLOpen*
 :Until	terminal.txt	/*:Until*
 :Up	terminal.txt	/*:Up*
 :UseVimball	pi_vimball.txt	/*:UseVimball*
@@ -9448,6 +9449,7 @@
 package-justify	usr_25.txt	/*package-justify*
 package-matchit	usr_05.txt	/*package-matchit*
 package-nohlsearch	usr_05.txt	/*package-nohlsearch*
+package-open	eval.txt	/*package-open*
 package-termdebug	terminal.txt	/*package-termdebug*
 package-translate_example	repeat.txt	/*package-translate_example*
 package-translation	repeat.txt	/*package-translation*
diff --git a/runtime/plugin/openPlugin.vim b/runtime/plugin/openPlugin.vim
index 51592f0..09f5ad2 100644
--- a/runtime/plugin/openPlugin.vim
+++ b/runtime/plugin/openPlugin.vim
@@ -3,12 +3,20 @@
 # Vim runtime support library
 #
 # Maintainer:   The Vim Project <https://github.com/vim/vim>
-# Last Change:  2025 Feb 01
+# Last Change:  2025 Apr 02
+
+if exists("g:loaded_openPlugin") || &cp
+  finish
+endif
+g:loaded_openPlugin = 1
 
 import autoload 'dist/vim9.vim'
 
 command -complete=shellcmd -nargs=1 Launch vim9.Launch(trim(<q-args>))
-command -complete=file -nargs=1 Open vim9.Open(trim(<q-args>))
+
+# technically, -nargs=1 is correct, but this throws E480: No match 
+# when the argument contains a wildchar on Windows
+command -complete=file -nargs=* Open vim9.Open(trim(<q-args>))
 
 const no_gx = get(g:, "nogx", get(g:, "netrw_nogx", false))
 if !no_gx