summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/autocmd.c13
-rw-r--r--src/errors.h2
-rw-r--r--src/testdir/test_autocmd.vim17
-rw-r--r--src/testdir/test_quickfix.vim12
-rw-r--r--src/testdir/test_window_cmd.vim4
-rw-r--r--src/version.c2
6 files changed, 23 insertions, 27 deletions
diff --git a/src/autocmd.c b/src/autocmd.c
index f7ca41de44..2f6001c267 100644
--- a/src/autocmd.c
+++ b/src/autocmd.c
@@ -956,11 +956,14 @@ do_autocmd(char_u *arg_in, int forceit)
last_group = AUGROUP_ERROR; // for listing the group name
if (*arg == '*' || *arg == NUL || *arg == '|')
{
- for (event = (event_T)0; (int)event < (int)NUM_EVENTS;
- event = (event_T)((int)event + 1))
- if (do_autocmd_event(event, pat,
- once, nested, cmd, forceit, group) == FAIL)
- break;
+ if (!forceit && *cmd != NUL)
+ emsg(_(e_cannot_define_autocommands_for_all_events));
+ else
+ for (event = (event_T)0; (int)event < (int)NUM_EVENTS;
+ event = (event_T)((int)event + 1))
+ if (do_autocmd_event(event, pat,
+ once, nested, cmd, forceit, group) == FAIL)
+ break;
}
else
{
diff --git a/src/errors.h b/src/errors.h
index 4bd4efea69..b2f6a55a80 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -345,3 +345,5 @@ EXTERN char e_invalid_operation_for_bool[]
INIT(= N_("E1153: Invalid operation for bool"));
EXTERN char e_divide_by_zero[]
INIT(= N_("E1154: Divide by zero"));
+EXTERN char e_cannot_define_autocommands_for_all_events[]
+ INIT(= N_("E1155: Cannot define autocommands for ALL events"));
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index ecef5b743b..9c996ec2f7 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -1827,20 +1827,9 @@ func Test_TextYankPost()
bwipe!
endfunc
-func Test_nocatch_wipe_all_buffers()
- " Real nasty autocommand: wipe all buffers on any event.
- au * * bwipe *
- call assert_fails('next x', ['E94:', 'E937:'])
- bwipe
- au!
-endfunc
-
-func Test_nocatch_wipe_dummy_buffer()
- CheckFeature quickfix
- " Nasty autocommand: wipe buffer on any event.
- au * x bwipe
- call assert_fails('lvĀ½ /x', 'E937:')
- au!
+func Test_autocommand_all_events()
+ call assert_fails('au * * bwipe', 'E1155:')
+ call assert_fails('au * x bwipe', 'E1155:')
endfunc
function s:Before_test_dirchanged()
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 8667631d3b..1799f2990b 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -3833,7 +3833,7 @@ func Test_lbuffer_crash()
sv Xtest
augroup QF_Test
au!
- au * * bw
+ au QuickFixCmdPre,QuickFixCmdPost,BufEnter,BufLeave * bw
augroup END
lbuffer
augroup QF_Test
@@ -3845,7 +3845,7 @@ endfunc
func Test_lexpr_crash()
augroup QF_Test
au!
- au * * call setloclist(0, [], 'f')
+ au QuickFixCmdPre,QuickFixCmdPost,BufEnter,BufLeave * call setloclist(0, [], 'f')
augroup END
lexpr ""
augroup QF_Test
@@ -3880,7 +3880,7 @@ func Test_lvimgrep_crash()
sv Xtest
augroup QF_Test
au!
- au * * call setloclist(0, [], 'f')
+ au QuickFixCmdPre,QuickFixCmdPost,BufEnter,BufLeave * call setloclist(0, [], 'f')
augroup END
lvimgrep quickfix test_quickfix.vim
augroup QF_Test
@@ -4215,7 +4215,7 @@ func Test_lbuffer_with_bwipe()
new
new
augroup nasty
- au * * bwipe
+ au QuickFixCmdPre,QuickFixCmdPost,BufEnter,BufLeave * bwipe
augroup END
lbuffer
augroup nasty
@@ -4228,9 +4228,9 @@ endfunc
func Xexpr_acmd_freelist(cchar)
call s:setup_commands(a:cchar)
- " This was using freed memory.
+ " This was using freed memory (but with what events?)
augroup nasty
- au * * call g:Xsetlist([], 'f')
+ au QuickFixCmdPre,QuickFixCmdPost,BufEnter,BufLeave * call g:Xsetlist([], 'f')
augroup END
Xexpr "x"
augroup nasty
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index f26b447461..07347a367f 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -567,8 +567,8 @@ endfunc
func Test_access_freed_mem()
call assert_equal(&columns, winwidth(0))
- " This was accessing freed memory
- au * 0 vs xxx
+ " This was accessing freed memory (but with what events?)
+ au BufEnter,BufLeave,WinEnter,WinLeave 0 vs xxx
arg 0
argadd
call assert_fails("all", "E242:")
diff --git a/src/version.c b/src/version.c
index 160b538c65..3d0613caf5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2420,
+/**/
2419,
/**/
2418,