mirror of
https://github.com/neovim/neovim.git
synced 2025-12-04 13:42:41 +00:00
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)
3388d33457
This commit is contained in:
@@ -19820,7 +19820,7 @@ void ex_function(exarg_T *eap)
|
|||||||
// s:func script-local function name
|
// s:func script-local function name
|
||||||
// g:func global function name, same as "func"
|
// g:func global function name, same as "func"
|
||||||
p = eap->arg;
|
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);
|
paren = (vim_strchr(p, '(') != NULL);
|
||||||
if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip) {
|
if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip) {
|
||||||
/*
|
/*
|
||||||
|
|||||||
3
src/nvim/testdir/sautest/autoload/sourced.vim
Normal file
3
src/nvim/testdir/sautest/autoload/sourced.vim
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
let g:loaded_sourced_vim += 1
|
||||||
|
func! sourced#something()
|
||||||
|
endfunc
|
||||||
@@ -2,10 +2,16 @@
|
|||||||
|
|
||||||
set runtimepath=./sautest
|
set runtimepath=./sautest
|
||||||
|
|
||||||
func! Test_autoload_dict_func()
|
func Test_autoload_dict_func()
|
||||||
let g:loaded_foo_vim = 0
|
let g:loaded_foo_vim = 0
|
||||||
let g:called_foo_bar_echo = 0
|
let g:called_foo_bar_echo = 0
|
||||||
call g:foo#bar.echo()
|
call g:foo#bar.echo()
|
||||||
call assert_equal(1, g:loaded_foo_vim)
|
call assert_equal(1, g:loaded_foo_vim)
|
||||||
call assert_equal(1, g:called_foo_bar_echo)
|
call assert_equal(1, g:called_foo_bar_echo)
|
||||||
endfunc
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user