diff options
author | Klemen Košir <klemen913@gmail.com> | 2014-04-28 14:31:36 +0200 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-04-28 13:26:04 -0300 |
commit | d4f8a86700a1e5c7b3694a34392f311d78e023a6 (patch) | |
tree | 352f62778cb8b0f84098f5f9865df37cc13f139c /src/eval.c | |
parent | f5a3df7b874c1bea2d81b0fc0f98a503df018f78 (diff) | |
download | rneovim-d4f8a86700a1e5c7b3694a34392f311d78e023a6.tar.gz rneovim-d4f8a86700a1e5c7b3694a34392f311d78e023a6.tar.bz2 rneovim-d4f8a86700a1e5c7b3694a34392f311d78e023a6.zip |
vim-patch:7.4.265
Problem: Can't call a global function with "g:" in an expression.
Solution: Skip the "g:" when looking up the function.
https://code.google.com/p/vim/source/detail?r=8ec9d2196bee0c5108f2d2c196a660a7f4e5f29f
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/eval.c b/src/eval.c index 62f9193305..34539f022b 100644 --- a/src/eval.c +++ b/src/eval.c @@ -7317,28 +7317,34 @@ call_func ( /* execute the function if no errors detected and executing */ if (evaluate && error == ERROR_NONE) { + char_u *rfname = fname; + + /* Ignore "g:" before a function name. */ + if (fname[0] == 'g' && fname[1] == ':') { + rfname = fname + 2; + } + rettv->v_type = VAR_NUMBER; /* default rettv is number zero */ rettv->vval.v_number = 0; error = ERROR_UNKNOWN; - if (!builtin_function(fname, -1)) { + if (!builtin_function(rfname, -1)) { /* * User defined function. */ - fp = find_func(fname); + fp = find_func(rfname); /* Trigger FuncUndefined event, may load the function. */ if (fp == NULL - && apply_autocmds(EVENT_FUNCUNDEFINED, - fname, fname, TRUE, NULL) + && apply_autocmds(EVENT_FUNCUNDEFINED, rfname, rfname, TRUE, NULL) && !aborting()) { /* executed an autocommand, search for the function again */ - fp = find_func(fname); + fp = find_func(rfname); } /* Try loading a package. */ - if (fp == NULL && script_autoload(fname, TRUE) && !aborting()) { + if (fp == NULL && script_autoload(rfname, TRUE) && !aborting()) { /* loaded a package, search for the function again */ - fp = find_func(fname); + fp = find_func(rfname); } if (fp != NULL) { |