mirror of
https://github.com/neovim/neovim.git
synced 2025-09-12 14:28:18 +00:00
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
This commit is contained in:

committed by
Thiago de Arruda

parent
f5a3df7b87
commit
d4f8a86700
20
src/eval.c
20
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) {
|
||||
|
Reference in New Issue
Block a user