Usually, :q command will show a warning
E37: No write since last change (add ! to override)
and will not quit the window if the buffer is being changed.
However, the current buffer has been splitted into 2 or more windows
and use :{count}q command to a window of other buffers,
that window is quitted without warning and any changes is lost.
This happens on 8.0.2 and 8.0.1203.
I am not exactly sure but the following change in ex_docmd.c may fix the
problem.
Looks like the current buffer is to be quitted as of 8.0.1203.
--- ex_docmdX.c 2017-10-16 18:16:44.114732500 +0900
+++ ex_docmd.c 2017-10-16 18:46:28.990821600 +0900
@@ -7224,10 +7224,10 @@
wp = curwin;
#ifdef FEAT_AUTOCMD
- apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, curbuf);
+ apply_autocmds(EVENT_QUITPRE, NULL, NULL, FALSE, wp->w_buffer);
/* Refuse to quit when locked or when the buffer in the last window is
* being closed (can only happen in autocommands). */
- if (curbuf_locked() || !win_valid(wp)
+ if (!win_valid(wp)
|| (wp->w_buffer->b_nwindows == 1 && wp->w_buffer->b_locked > 0))
return;
#endif
@@ -7241,8 +7241,8 @@
*/
if (check_more(FALSE, eap->forceit) == OK && only_one_window())
exiting = TRUE;
- if ((!buf_hide(curbuf)
- && check_changed(curbuf, (p_awa ? CCGD_AW : 0)
+ if ((!buf_hide(wp->w_buffer)
+ && check_changed(wp->w_buffer, (p_awa ? CCGD_AW : 0)
| (eap->forceit ? CCGD_FORCEIT : 0)
| CCGD_EXCMD))
|| check_more(TRUE, eap->forceit) == FAIL
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.