aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <janedmundlazo@hotmail.com>2018-09-09 20:28:07 -0400
committerJan Edmund Lazo <janedmundlazo@hotmail.com>2018-09-09 20:30:32 -0400
commit39ab7cc6fb5948542f4ccc1d4067fdcca5183964 (patch)
treef3c6a4fd65aaa14309cf3571e6338a8d961c392b
parent3fd9ffd36893cd82549956de6960282791573b87 (diff)
downloadrneovim-39ab7cc6fb5948542f4ccc1d4067fdcca5183964.tar.gz
rneovim-39ab7cc6fb5948542f4ccc1d4067fdcca5183964.tar.bz2
rneovim-39ab7cc6fb5948542f4ccc1d4067fdcca5183964.zip
vim-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 vim/vim#2423) https://github.com/vim/vim/commit/3388d334572f9d65a603d09d75e363805d96c5d9
-rw-r--r--src/nvim/eval.c2
-rw-r--r--src/nvim/testdir/sautest/autoload/sourced.vim3
-rw-r--r--src/nvim/testdir/test_autoload.vim8
3 files changed, 11 insertions, 2 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 429e327028..8d8fdab351 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -19820,7 +19820,7 @@ void ex_function(exarg_T *eap)
// s:func script-local function name
// 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) {
/*
diff --git a/src/nvim/testdir/sautest/autoload/sourced.vim b/src/nvim/testdir/sautest/autoload/sourced.vim
new file mode 100644
index 0000000000..f69f00cb53
--- /dev/null
+++ b/src/nvim/testdir/sautest/autoload/sourced.vim
@@ -0,0 +1,3 @@
+let g:loaded_sourced_vim += 1
+func! sourced#something()
+endfunc
diff --git a/src/nvim/testdir/test_autoload.vim b/src/nvim/testdir/test_autoload.vim
index a92851f655..7396c227c9 100644
--- a/src/nvim/testdir/test_autoload.vim
+++ b/src/nvim/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