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

Commit: 
https://github.com/vim/vim/commit/9301b437bca880c10921a7d0369d671a716e85f2
Author: Christian Brabandt <c...@256bit.org>
Date:   Wed Apr 2 19:32:03 2025 +0200

    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 <c...@256bit.org>

diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 7ea768aef..170d2d037 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 @@ executable.  It takes the following arguments:
        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 @@ Opens `path` with the system default handler (macOS 
`open`, Windows
 `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 @@ Usage: >vim
        :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 fa4709224..acb225101 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2188,6 +2188,7 @@ $quote    eval.txt        /*$quote*
 :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-hlyank    usr_05.txt      /*package-hlyank*
 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 51592f09b..09f5ad2c4 100644
--- a/runtime/plugin/openPlugin.vim
+++ b/runtime/plugin/openPlugin.vim
@@ -3,12 +3,20 @@ vim9script
 # 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

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1u029D-00Ds6a-5p%40256bit.org.

Raspunde prin e-mail lui