vim - Calling autoloaded dictionary functions from other autoloaded dictionary functions in VimL (vimscript) -


is possible invoke autoloaded dictionary function within autoloaded dictionary function in vim script?

i want have in autoload/foo.vim:

function! foo#initialize()   return 1 endfunction  let foo#mydict = {}  function! foo#mydict.say_hi() dict   echo "hi" endfunction  let foo#otherdict = {}  function! foo#otherdict.call_hi() dict   call foo#mydict.say_hi() endfunction 

and want use file/interactively/whatever:

call foo#initialize() call foo#otherdict.call_hi() 

unfortunately, gets me error:

e121: undefined variable: foo#mydict 

the call foo#initialize() necessary due bug/limitation in vim related dictionary functions not triggering autoload. there's google groups thread bram confirmed problem.

i'm not sure that's root of problem, however, because once file autoloaded (via foo#initialize()), invoking dictionary functions works in general. it's nested call example above that's giving me error.

to clarify, works fine:

function! foo#sayhello()   echo "hello" endfunction  function! foo#otherdict.say_hello() dict   call foo#sayhello() end 

it's nested calls autoloaded dictionary functions fail.

the same happens when script put in plugin/ directory or explicitly :runtime'd before use. there's no error when instead of foo#mydict script-local s:mydict used. unexpected me, too. please submit bug on vim_dev mailing list.


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -