*funcref* create lazier function references. Pass arguments to create closure like function calls Author: Marc Weber, marco-oweber@gmx.de ----------------------------------------------------------------------- HOWTO~ Use *funcref#Function* to create a special dict called *faked-function-reference* which can be called by *funcref#Call* > { 'faked_function_reference': 'file#FuncName' } < passing some arguments and / or self: > { 'faked_function_reference': 'MyFunc', 'args': [1,2], 'self' : { a object ] } < You can also create lambda like functions which will be evaled: > { 'faked_function_reference': 'return ARGS[1]' } REASONS ~ Creating a Vim funcref pointing to an autoload function will make Vim source that file. This is not lazy enough. (Seems to be no longer true? Has this changed?) A Vim function reference neither allows attaching arguments nor self. Don't care about case of variables. Normally when using Vim function references you have to use variable names starting with an upper case letter (E704) Example: ~ > let f = funcref#Function('return ARGS[0].ARGS[1].SELF["key"]',{'args':[3], 'self':{'key': 'value'} }) echo funcref#Call(f, [2]) " prints "32value" echo funcref#Call('no value') < echo funcref#Call(f, [2])