summaryrefslogtreecommitdiffstats
path: root/src/ex_cmds2.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-01-02 22:25:52 +0100
committerBram Moolenaar <Bram@vim.org>2016-01-02 22:25:52 +0100
commit027387f70c671f62e3e08e0bdd09ec05b0232735 (patch)
tree4fa32d2d3a305b0330e35aa14db5dce4c0c4098c /src/ex_cmds2.c
parentfa03fd6c4a9fe05274d62ddefd645cb5801d2023 (diff)
patch 7.4.1037v7.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)
Diffstat (limited to 'src/ex_cmds2.c')
-rw-r--r--src/ex_cmds2.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 30f9e9d18b..05baa7e99e 100644
--- 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);