1
0
forked from aniani/vim

patch 8.2.5011: Replacing an autocommand requires several lines

Problem:    Replacing an autocommand requires several lines.
Solution:   Add the "replace" flag to autocmd_add(). (Yegappan Lakshmanan,
            closes #10473)
This commit is contained in:
Yegappan Lakshmanan
2022-05-24 11:40:11 +01:00
committed by Bram Moolenaar
parent c9a431c763
commit 971f6825ee
5 changed files with 58 additions and 11 deletions

View File

@@ -2766,6 +2766,7 @@ autocmd_add_or_delete(typval_T *argvars, typval_T *rettv, int delete)
char_u *end;
int once;
int nested;
int replace; // replace the cmd for a group/event
int retval = VVAL_TRUE;
int save_augroup = current_augroup;
@@ -2877,6 +2878,9 @@ autocmd_add_or_delete(typval_T *argvars, typval_T *rettv, int delete)
once = dict_get_bool(event_dict, (char_u *)"once", FALSE);
nested = dict_get_bool(event_dict, (char_u *)"nested", FALSE);
// if 'replace' is true, then remove all the commands associated with
// this autocmd event/group and add the new command.
replace = dict_get_bool(event_dict, (char_u *)"replace", FALSE);
cmd = dict_get_string(event_dict, (char_u *)"cmd", TRUE);
if (cmd == NULL)
@@ -2903,8 +2907,8 @@ autocmd_add_or_delete(typval_T *argvars, typval_T *rettv, int delete)
}
else
{
if (do_autocmd_event(event, pat, once, nested, cmd, delete, group,
0) == FAIL)
if (do_autocmd_event(event, pat, once, nested, cmd,
delete | replace, group, 0) == FAIL)
{
retval = VVAL_FALSE;
break;