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