0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.1290: Vim9: cannot replace a global function

Problem:    Vim9: cannot replace a global function.
Solution:   Allow for "!" on a global function. (closes #6524)  Also fix that
            :delfunc on a :def function only made it empty.
This commit is contained in:
Bram Moolenaar
2020-07-25 15:41:11 +02:00
parent c841afff6a
commit 925e9fd633
3 changed files with 59 additions and 6 deletions

View File

@@ -1148,6 +1148,8 @@ func_clear_free(ufunc_T *fp, int force)
func_clear(fp, force);
if (force || fp->uf_dfunc_idx == 0)
func_free(fp, force);
else
fp->uf_flags |= FC_DEAD;
}
@@ -2557,12 +2559,6 @@ def_function(exarg_T *eap, char_u *name_arg)
char_u *heredoc_trimmed = NULL;
int vim9script = in_vim9script();
if (vim9script && eap->forceit)
{
emsg(_(e_nobang));
return NULL;
}
/*
* ":function" without argument: list functions.
*/
@@ -2732,6 +2728,13 @@ def_function(exarg_T *eap, char_u *name_arg)
}
p = skipwhite(p + 1);
// In Vim9 script only global functions can be redefined.
if (vim9script && eap->forceit && !is_global)
{
emsg(_(e_nobang));
goto ret_free;
}
ga_init2(&newlines, (int)sizeof(char_u *), 3);
if (!eap->skip && name_arg == NULL)