diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index adbbd5a0f8ba97c1d5ef27cf9c20866abeb71ffd..16540bda09c1d74d3bb0ca59608593f9990f8b67 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -102,7 +102,7 @@ EX(CMD_abclear,		"abclear",	ex_abclear,
 EX(CMD_aboveleft,	"aboveleft",	ex_wrongmodifier,
 			NEEDARG|EXTRA|NOTRLCOM),
 EX(CMD_all,		"all",		ex_all,
-			RANGE|NOTADR|COUNT|TRLBAR),
+			BANG|RANGE|NOTADR|COUNT|TRLBAR),
 EX(CMD_amenu,		"amenu",	ex_menu,
 			RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
 EX(CMD_anoremenu,	"anoremenu",	ex_menu,
@@ -798,7 +798,7 @@ EX(CMD_sNext,		"sNext",	ex_previous,
 EX(CMD_sargument,	"sargument",	ex_argument,
 			BANG|RANGE|NOTADR|COUNT|EXTRA|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_sall,		"sall",		ex_all,
-			RANGE|NOTADR|COUNT|TRLBAR),
+			BANG|RANGE|NOTADR|COUNT|TRLBAR),
 EX(CMD_sandbox,		"sandbox",	ex_wrongmodifier,
 			NEEDARG|EXTRA|NOTRLCOM),
 EX(CMD_saveas,		"saveas",	ex_write,
diff --git a/src/testdir/test31.in b/src/testdir/test31.in
index b00c7602ef0b4bf7707b23ff3a7c687e0b20225a..7dc233478175c9f2ef23507655694f75b07f27b1 100644
--- a/src/testdir/test31.in
+++ b/src/testdir/test31.in
@@ -63,6 +63,12 @@ A 3:close
 :" write "testtext 1"
 A 3:close!
 :w >>test.out
+:set nohidden
+:" test ":all!" hides changed buffer; write "testtext 2 2 2"
+:sp Xtest4
+GA 4:all!
+:1wincmd w
+:w >>test.out
 :qa!
 ENDTEST
 
diff --git a/src/testdir/test31.ok b/src/testdir/test31.ok
index 3311ad5dfb1746e311cbc2cbcba59aa25c6b39dd..185bdc768e28e209b9b33dc4f8c357619b9b88a1 100644
--- a/src/testdir/test31.ok
+++ b/src/testdir/test31.ok
@@ -9,3 +9,4 @@ testtext 3 3
 testtext 1
 testtext 3 3 3
 testtext 1
+testtext 2 2 2
diff --git a/src/version.c b/src/version.c
index 2461456916ec7bda797104a96ed1ce36095c333a..bf32d28d7261d7d25ea36eb9626c9ae262fd2b93 100644
--- a/src/version.c
+++ b/src/version.c
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    444,
 /**/
     443,
 /**/