Is there a way to achieve the following in Vim?
command! -nargs=* -complete=customlist,CustomFunc1 -complete=customlist,CustomFunc2 Foo call MyFunction(<f-args>)
The user will be able to tab-complete two arguments when calling the function Foo from Vim command line. The auto-complete will pull from two different lists.
E.g.:
:Foo arg1 good<TAB> whi<TAB>
Pressing Tab completes the words:
:Foo arg1 goodyear white
There is sufficient information passed to completion function through
its arguments. Knowing current cursor position in the command line to
be completed, it is possible to determine the number of the argument
that is currently being edited. Here is the function that returns
that number as the only completion suggestion:
Substitute the last line with a call to one of the functions
completing specific argument (assuming they are already written).
For instance:
Note that it is necessary to ignore whitespace-separated words before
the command name, because those could be the limits of a range, or
a count, if the command has either of them (spaces are allowed in both).
The regular expression used to split command line into arguments takes
into account escaped whitespace which is a part of an argument, and
not a separator. (Of course, completion functions should escape
whitespace in suggested candidates, as usual in case of the command
having more than one possible argument.)