On 5/16/06, Yakov Lerner <[EMAIL PROTECTED]> wrote:
On 5/16/06, Bob Hiestand <[EMAIL PROTECTED]> wrote:
>  I'm re-writing my cvscommand.vim plugin to handle both CVS and
> Subversion version control systems.  I'm currently implementing some
> of the functionality through function references that define common
> operations for each source control system in a dictionary specfic to
> that system.  I have a situation where I have a generic dispatch
> function that identifies which dictionary to dereference to obtain the
> function reference.
>
>  The problem is that the function eventually called behind the
> function reference may have any number of arguments.  Therefore, the
> dispatch function takes any number of arguments to pass through.  This
> leads to the actual call, which looks like this (all on one line):
>
> function! s:ExecuteVCSCommand(command, ...)
>  " find the proper functionMap dictionary, and then:
>  execute "return functionMap[a:command](" . join(map(copy(a:000),
> "'\"' . v:val . '\"'"), ",") . ")"
>
>  My question is whether there is a simpler way to pass an unknown
> number of arguments from the current function to a function which
> accepts a variable-length list of arguments.

The only thing I can think of is rewriting target functions
into accepting 1 argument which is a list. I don't find
vim vararg mechanism easy to use in general.

Thanks, Yakov, classic case of not looking at it fresh and trying to
adapt old code into a new infrastructure.  That makes a great deal
more sense.

Thanks again,

Bob

Reply via email to