mirror of
https://github.com/neovim/neovim.git
synced 2025-09-05 19:08:15 +00:00
vim-patch:8.2.3626: "au! event" cannot be followed by another command
Problem: "au!" and "au! event" cannot be followed by another command as
documented.
Solution: When a bar is found set nextcmd.
b8e642f7ac
Cherry-pick do_autocmd() "eap" argument from patch 8.2.3268.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
@@ -779,7 +779,7 @@ void au_event_restore(char *old_ei)
|
||||
// :autocmd * *.c show all autocommands for *.c files.
|
||||
//
|
||||
// Mostly a {group} argument can optionally appear before <event>.
|
||||
void do_autocmd(char *arg_in, int forceit)
|
||||
void do_autocmd(exarg_T *eap, char *arg_in, int forceit)
|
||||
{
|
||||
char *arg = arg_in;
|
||||
char *envpat = NULL;
|
||||
@@ -790,6 +790,7 @@ void do_autocmd(char *arg_in, int forceit)
|
||||
int group;
|
||||
|
||||
if (*arg == '|') {
|
||||
eap->nextcmd = arg + 1;
|
||||
arg = "";
|
||||
group = AUGROUP_ALL; // no argument, use all groups
|
||||
} else {
|
||||
@@ -806,6 +807,7 @@ void do_autocmd(char *arg_in, int forceit)
|
||||
|
||||
pat = skipwhite(pat);
|
||||
if (*pat == '|') {
|
||||
eap->nextcmd = pat + 1;
|
||||
pat = "";
|
||||
cmd = "";
|
||||
} else {
|
||||
|
@@ -4231,7 +4231,7 @@ static void ex_autocmd(exarg_T *eap)
|
||||
secure = 2;
|
||||
eap->errmsg = _(e_curdir);
|
||||
} else if (eap->cmdidx == CMD_autocmd) {
|
||||
do_autocmd(eap->arg, eap->forceit);
|
||||
do_autocmd(eap, eap->arg, eap->forceit);
|
||||
} else {
|
||||
do_augroup(eap->arg, eap->forceit);
|
||||
}
|
||||
|
@@ -481,17 +481,20 @@ endfunc
|
||||
func Test_early_bar()
|
||||
" test that a bar is recognized before the {event}
|
||||
call s:AddAnAutocmd()
|
||||
augroup vimBarTest | au! | augroup END
|
||||
augroup vimBarTest | au! | let done = 77 | augroup END
|
||||
call assert_equal(1, len(split(execute('au vimBarTest'), "\n")))
|
||||
call assert_equal(77, done)
|
||||
|
||||
call s:AddAnAutocmd()
|
||||
augroup vimBarTest| au!| augroup END
|
||||
augroup vimBarTest| au!| let done = 88 | augroup END
|
||||
call assert_equal(1, len(split(execute('au vimBarTest'), "\n")))
|
||||
call assert_equal(88, done)
|
||||
|
||||
" test that a bar is recognized after the {event}
|
||||
call s:AddAnAutocmd()
|
||||
augroup vimBarTest| au!BufReadCmd| augroup END
|
||||
augroup vimBarTest| au!BufReadCmd| let done = 99 | augroup END
|
||||
call assert_equal(1, len(split(execute('au vimBarTest'), "\n")))
|
||||
call assert_equal(99, done)
|
||||
|
||||
" test that a bar is recognized after the {group}
|
||||
call s:AddAnAutocmd()
|
||||
|
Reference in New Issue
Block a user