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:
@@ -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)
|
||||
|
Reference in New Issue
Block a user