Mercurial > vim
changeset 13004:41e46caf1030 v8.0.1378
patch 8.0.1378: autoload script sources itself when defining function
commit https://github.com/vim/vim/commit/3388d334572f9d65a603d09d75e363805d96c5d9
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Dec 7 22:23:04 2017 +0100
patch 8.0.1378: autoload script sources itself when defining function
Problem: Autoload script sources itself when defining function.
Solution: Pass TFN_NO_AUTOLOAD to trans_function_name(). (Yasuhiro
Matsumoto, closes #2423)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 07 Dec 2017 22:30:06 +0100 |
parents | aa448f6b6dc5 |
children | 0bbb5611d14e |
files | src/testdir/sautest/autoload/sourced.vim src/testdir/test_autoload.vim src/userfunc.c src/version.c |
diffstat | 4 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/src/testdir/sautest/autoload/sourced.vim @@ -0,0 +1,3 @@ +let g:loaded_sourced_vim += 1 +func! sourced#something() +endfunc
--- a/src/testdir/test_autoload.vim +++ b/src/testdir/test_autoload.vim @@ -2,10 +2,16 @@ set runtimepath=./sautest -func! Test_autoload_dict_func() +func Test_autoload_dict_func() let g:loaded_foo_vim = 0 let g:called_foo_bar_echo = 0 call g:foo#bar.echo() call assert_equal(1, g:loaded_foo_vim) call assert_equal(1, g:called_foo_bar_echo) endfunc + +func Test_source_autoload() + let g:loaded_sourced_vim = 0 + source sautest/autoload/sourced.vim + call assert_equal(1, g:loaded_sourced_vim) +endfunc
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -1886,7 +1886,7 @@ ex_function(exarg_T *eap) * g:func global function name, same as "func" */ p = eap->arg; - name = trans_function_name(&p, eap->skip, 0, &fudi, NULL); + name = trans_function_name(&p, eap->skip, TFN_NO_AUTOLOAD, &fudi, NULL); paren = (vim_strchr(p, '(') != NULL); if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip) {