2012-07-28 5 views
9

Ich möchte einen Wrapper zu einer Plugin-Funktion schreiben, aber es verwendet varargs (...). Wie kann ich dieselben Argumente übergeben, die meine Funktion für die Funktion des Plugins erhält?Wie kann ich varargs an eine andere Funktion in vimscript übergeben?

Beispiel:

function! PluginInterface(...) 
    for i in a:000 
     echo i 
    endfor 
endfunction 

function! MyInterface(...) 
    echo a:1 . ' is great' 
    call PluginInterface(a:000) 
endfunction 

echo '>> Their call' 
call PluginInterface('hello', 'world') 
echo '>> My call' 
call MyInterface('hello', 'world') 

Antwort

17

Statt die Funktion direkt (call PluginInterface(a:000)) aufzurufen, verwenden call():

call call("PluginInterface", a:000) 
call call(function("PluginInterface"), a:000) 

(Das sieht seltsam, aber call() ist eine Funktion, so dass Sie immer noch das Präfix müssen mit :call oder let x = oder etwas, das eine expr akzeptieren.)

Siehe :help call().

Verwandte Themen