diff src/ex_cmds2.c @ 7469:15eefe1b0dad v7.4.1037

commit https://github.com/vim/vim/commit/027387f70c671f62e3e08e0bdd09ec05b0232735 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 2 22:25:52 2016 +0100 patch 7.4.1037 Problem: Using "q!" when there is a modified hidden buffer does not unload the current buffer, resulting in the need to abandon it again. Solution: When using "q!" unload the current buffer when needed. (Yasuhiro Matsumoto, Hirohito Higashi)
author Christian Brabandt <cb@256bit.org>
date Sat, 02 Jan 2016 22:30:04 +0100
parents 84efaf06f195
children 8fc60af6dbf5
line wrap: on
line diff
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1636,10 +1636,13 @@ add_bufnum(bufnrs, bufnump, nr)
 /*
  * Return TRUE if any buffer was changed and cannot be abandoned.
  * That changed buffer becomes the current buffer.
+ * When "unload" is true the current buffer is unloaded instead of making it
+ * hidden.  This is used for ":q!".
  */
     int
-check_changed_any(hidden)
+check_changed_any(hidden, unload)
     int		hidden;		/* Only check hidden buffers */
+    int		unload;
 {
     int		ret = FALSE;
     buf_T	*buf;
@@ -1750,7 +1753,7 @@ buf_found:
 
     /* Open the changed buffer in the current window. */
     if (buf != curbuf)
-	set_curbuf(buf, DOBUF_GOTO);
+	set_curbuf(buf, unload ? DOBUF_UNLOAD : DOBUF_GOTO);
 
 theend:
     vim_free(bufnrs);