diff src/ex_cmds2.c @ 14642:96858d612aff v8.1.0334

patch 8.1.0334: 'autowrite' takes effect when buffer is not to be written commit https://github.com/vim/vim/commit/8c9e7b00f6566dc41e794ef11c93d93b034c7134 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Aug 30 13:07:17 2018 +0200 patch 8.1.0334: 'autowrite' takes effect when buffer is not to be written Problem: 'autowrite' takes effect when buffer is not to be written. Solution: Don't write buffers that are not supposed to be written. (Even Q Jones, closes #3391) Add tests for 'autowrite'.
author Christian Brabandt <cb@256bit.org>
date Thu, 30 Aug 2018 13:15:06 +0200
parents f761a55a8aed
children 0d5726f2913b
line wrap: on
line diff
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -2041,7 +2041,7 @@ autowrite(buf_T *buf, int forceit)
 }
 
 /*
- * flush all buffers, except the ones that are readonly
+ * Flush all buffers, except the ones that are readonly or are never written.
  */
     void
 autowrite_all(void)
@@ -2051,7 +2051,7 @@ autowrite_all(void)
     if (!(p_aw || p_awa) || !p_write)
 	return;
     FOR_ALL_BUFFERS(buf)
-	if (bufIsChanged(buf) && !buf->b_p_ro)
+	if (bufIsChanged(buf) && !buf->b_p_ro && !bt_dontwrite(buf))
 	{
 	    bufref_T	bufref;