changeset 10086:1de911ef1edf v7.4.2314

commit https://github.com/vim/vim/commit/de653f08805dde14424d417502a0480a6ad292f8 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 3 16:59:06 2016 +0200 patch 7.4.2314 Problem: No error when deleting an augroup while it's the current one. Solution: Disallow deleting an augroup when it's the current one.
author Christian Brabandt <cb@256bit.org>
date Sat, 03 Sep 2016 17:00:07 +0200
parents f7a4267983a4
children 2a3569e47156
files src/fileio.c src/testdir/test_autocmd.vim src/version.c
diffstat 3 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -8017,6 +8017,8 @@ au_del_group(char_u *name)
     i = au_find_group(name);
     if (i == AUGROUP_ERROR)	/* the group doesn't exist */
 	EMSG2(_("E367: No such group: \"%s\""), name);
+    else if (i == current_augroup)
+	EMSG(_("E936: Cannot delete the current group"));
     else
     {
 	event_T	event;
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -182,13 +182,17 @@ func Test_augroup_warning()
   doautocmd VimEnter
   redir END
   call assert_true(match(res, "W19:") < 0)
+  au! VimEnter
 endfunc
 
 func Test_augroup_deleted()
-  " This caused a crash
+  " This caused a crash before E936 was introduced
   augroup x
+    call assert_fails('augroup! x', 'E936:')
+    au VimEnter * echo
+  augroup end
   augroup! x
-  au VimEnter * echo
-  au VimEnter
+  call assert_true(match(execute('au VimEnter'), "-Deleted-.*VimEnter") >= 0)
+  au! VimEnter
 endfunc
 
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2314,
+/**/
     2313,
 /**/
     2312,