]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(openPlugin): fix E480 when opening URLs with wildcards on Windows
authorChristian Brabandt <cb@256bit.org>
Wed, 2 Apr 2025 17:32:03 +0000 (19:32 +0200)
committerChristian Brabandt <cb@256bit.org>
Wed, 2 Apr 2025 17:41:21 +0000 (19:41 +0200)
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>
runtime/doc/eval.txt
runtime/doc/tags
runtime/plugin/openPlugin.vim

index 7ea768aef5db10ca2b2c6220dd5059cc7292c4b4..170d2d0377f1b3752bd80acd88fab64b40ed8f57 100644 (file)
@@ -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
index fa4709224cf7c1fb556482472604e126f95a310c..acb2251019da156229c1b0a55af99411953ce248 100644 (file)
@@ -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*
index 51592f09be42693ee770346373e33bd07b8a9a7e..09f5ad2c43fc99e05baa7131af569c6875db6d50 100644 (file)
@@ -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