diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-01-25 15:51:56 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-01-25 15:51:56 +0000 |
commit | 06b77229ca704d00c4f138ed0377556e54d5851f (patch) | |
tree | 6b24e9838841943803574a424599d687be2c05f1 /src/testdir/test_vim9_import.vim | |
parent | dc5490e2cbc8c16022a23b449b48c1bd0083f366 (diff) |
patch 8.2.4216: Vim9: cannot use a function from an autoload import directlyv8.2.4216
Problem: Vim9: cannot use a function from an autoload import directly.
Solution: Add the AUTOLOAD instruction to figure out at runtime.
(closes #9620)
Diffstat (limited to 'src/testdir/test_vim9_import.vim')
-rw-r--r-- | src/testdir/test_vim9_import.vim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/testdir/test_vim9_import.vim b/src/testdir/test_vim9_import.vim index 506b0ee8d7..7878788a0d 100644 --- a/src/testdir/test_vim9_import.vim +++ b/src/testdir/test_vim9_import.vim @@ -703,6 +703,41 @@ def Test_use_autoload_import_partial_in_opfunc() set opfunc= bwipe! delete('Xdir', 'rf') + nunmap <F3> + &rtp = save_rtp +enddef + +def Test_set_opfunc_to_autoload_func_directly() + mkdir('Xdir/autoload', 'p') + var save_rtp = &rtp + exe 'set rtp^=' .. getcwd() .. '/Xdir' + + var lines =<< trim END + vim9script + export def Opfunc(..._) + g:opfunc_called = 'yes' + enddef + END + writefile(lines, 'Xdir/autoload/opfunc.vim') + + new + lines =<< trim END + vim9script + import autoload 'opfunc.vim' + nnoremap <expr> <F3> TheFunc() + def TheFunc(): string + &operatorfunc = opfunc.Opfunc + return 'g@' + enddef + feedkeys("\<F3>l", 'xt') + assert_equal('yes', g:opfunc_called) + END + CheckScriptSuccess(lines) + + set opfunc= + bwipe! + delete('Xdir', 'rf') + nunmap <F3> &rtp = save_rtp enddef |