Is there a way to call a vim function with a list of arguments. My list of arguments is coming from a optional splat arguments in another function, and I need a way to pass these arguments to the target function.
The target function is,
function! run_hello(cmd, ...)
echo 'run_hello'
echo a:cmd
echo a:000
endfunction
The function that will call run_hello
is,
function! hello(...)
call run_hello('foo', the splats here)
endfunction
It will be called like so, with different arguments.
call hello('lorem', 'ipsum', 'dolor')
I am currently using hello(arglist)
and passing the a:000
list forward. But I would like to know if it is possible to call a function with a list as arguments, that then become it's regular argument list.
Something like JavaScript's,
foo.apply(this, ['a', 'b', 'c']
Thanks.
The equivalent of JavaScript's apply()
is call()
in Vimscript:
function! hello(...)
call call('run_hello', ['foo'] + a:000)
endfunction
This is no typo: You :call
the function named call()
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With