mirror of
https://github.com/vim/vim.git
synced 2025-09-26 04:04:07 -04:00
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)
This commit is contained in:
3
src/testdir/sautest/autoload/sourced.vim
Normal file
3
src/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
|
||||
|
||||
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
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1378,
|
||||
/**/
|
||||
1377,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user