diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index ac40127..bb4a831 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -6055,7 +6055,7 @@
 	emsg(_(e_cannot_close_autocmd_or_popup_window));
 	return;
     }
-    if (window_layout_locked())
+    if (window_layout_locked(CMD_close))
 	return;
 
     need_hide = (bufIsChanged(buf) && buf->b_nwindows <= 1);
@@ -6229,7 +6229,7 @@
 	cmdwin_result = K_IGNORE;
     else if (first_tabpage->tp_next == NULL)
 	emsg(_(e_cannot_close_last_tab_page));
-    else if (!window_layout_locked())
+    else if (!window_layout_locked(CMD_tabclose))
     {
 	tab_number = get_tabpage_arg(eap);
 	if (eap->errmsg == NULL)
@@ -6265,7 +6265,7 @@
 	cmdwin_result = K_IGNORE;
     else if (first_tabpage->tp_next == NULL)
 	msg(_("Already only one tab page"));
-    else if (!window_layout_locked())
+    else if (!window_layout_locked(CMD_tabonly))
     {
 	tab_number = get_tabpage_arg(eap);
 	if (eap->errmsg == NULL)
@@ -6298,7 +6298,7 @@
     void
 tabpage_close(int forceit)
 {
-    if (window_layout_locked())
+    if (window_layout_locked(CMD_tabclose))
 	return;
 
     // First close all the windows but the current one.  If that worked then
@@ -6346,7 +6346,7 @@
     static void
 ex_only(exarg_T *eap)
 {
-    if (window_layout_locked())
+    if (window_layout_locked(CMD_only))
 	return;
 # ifdef FEAT_GUI
     need_mouse_correct = TRUE;
@@ -6373,7 +6373,7 @@
     // ":hide" or ":hide | cmd": hide current window
     if (!eap->skip)
     {
-	if (window_layout_locked())
+	if (window_layout_locked(CMD_hide))
 	    return;
 #ifdef FEAT_GUI
 	need_mouse_correct = TRUE;
diff --git a/src/proto/window.pro b/src/proto/window.pro
index 70d6b06..5316f95 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -1,5 +1,5 @@
 /* window.c */
-int window_layout_locked(void);
+int window_layout_locked(enum CMD_index cmd);
 win_T *prevwin_curwin(void);
 void do_window(int nchar, long Prenum, int xchar);
 void get_wincmd_addr_type(char_u *arg, exarg_T *eap);
diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim
index f2f3725..637fdb8 100644
--- a/src/testdir/test_autocmd.vim
+++ b/src/testdir/test_autocmd.vim
@@ -756,6 +756,14 @@
     bwipe!
     au! BufEnter
   endfor
+
+  new
+  new
+  autocmd BufEnter * ++once close
+  call assert_fails('close', 'E1312:')
+
+  au! BufEnter
+  only
 endfunc
 
 " Closing a window might cause an endless loop
diff --git a/src/version.c b/src/version.c
index f6640c3..b642be9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    909,
+/**/
     908,
 /**/
     907,
diff --git a/src/window.c b/src/window.c
index a64a52e..422f4fa 100644
--- a/src/window.c
+++ b/src/window.c
@@ -111,13 +111,15 @@
 
 /*
  * When the window layout cannot be changed give an error and return TRUE.
+ * "cmd" indicates the action being performed and is used to pick the relevant
+ * error message.
  */
     int
-window_layout_locked(void)
+window_layout_locked(enum CMD_index cmd)
 {
     if (split_disallowed > 0 || close_disallowed > 0)
     {
-	if (close_disallowed == 0)
+	if (close_disallowed == 0 && cmd == CMD_tabnew)
 	    emsg(_(e_cannot_split_window_when_closing_buffer));
 	else
 	    emsg(_(e_not_allowed_to_change_window_layout_in_this_autocmd));
@@ -2573,7 +2575,7 @@
 	emsg(_(e_cannot_close_last_window));
 	return FAIL;
     }
-    if (window_layout_locked())
+    if (window_layout_locked(CMD_close))
 	return FAIL;
 
     if (win->w_closing || (win->w_buffer != NULL
@@ -4062,7 +4064,7 @@
 	emsg(_(e_invalid_in_cmdline_window));
 	return FAIL;
     }
-    if (window_layout_locked())
+    if (window_layout_locked(CMD_tabnew))
 	return FAIL;
 
     newtp = alloc_tabpage();
