summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-10-14 16:06:20 +0200
committerBram Moolenaar <Bram@vim.org>2017-10-14 16:06:20 +0200
commit2c33d7bb69c4c2c5b0e39b03cc4b0c04cfdfbb0b (patch)
tree24ccce8c31f7ae5c8be19769c9b6eed1359e8fab
parent6047e2c722347ae9443c2632c6e061918ccef9c6 (diff)
patch 8.0.1190: unusable after opening new window in BufWritePre eventv8.0.1190
Problem: Vim becomes unusable after opening new window in BufWritePre event. Solution: Call not_exiting(). (Martin Tournoij, closes #2205) Also for "2q" when a help window is open. Add a test.
-rw-r--r--src/ex_docmd.c2
-rw-r--r--src/testdir/test_writefile.vim44
-rw-r--r--src/version.c2
3 files changed, 48 insertions, 0 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index bb1ae46907..7365d1bd3a 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7261,6 +7261,7 @@ ex_quit(exarg_T *eap)
*/
if (only_one_window() && (ONE_WINDOW || eap->addr_count == 0))
getout(0);
+ not_exiting();
#ifdef FEAT_GUI
need_mouse_correct = TRUE;
#endif
@@ -7799,6 +7800,7 @@ ex_exit(exarg_T *eap)
{
if (only_one_window()) /* quit last window, exit Vim */
getout(0);
+ not_exiting();
# ifdef FEAT_GUI
need_mouse_correct = TRUE;
# endif
diff --git a/src/testdir/test_writefile.vim b/src/testdir/test_writefile.vim
index 6768e3154a..f462d049c0 100644
--- a/src/testdir/test_writefile.vim
+++ b/src/testdir/test_writefile.vim
@@ -49,3 +49,47 @@ func Test_writefile_fails_conversion()
bwipe!
set backup& writebackup&
endfunc
+
+func SetFlag(timer)
+ let g:flag = 1
+endfunc
+
+func Test_write_quit_split()
+ " Prevent exiting by splitting window on file write.
+ augroup testgroup
+ autocmd BufWritePre * split
+ augroup END
+ e! Xfile
+ call setline(1, 'nothing')
+ wq
+
+ if has('timers')
+ " timer will not run if "exiting" is still set
+ let g:flag = 0
+ call timer_start(1, 'SetFlag')
+ sleep 50m
+ call assert_equal(1, g:flag)
+ unlet g:flag
+ endif
+ au! testgroup
+ bwipe Xfile
+ call delete('Xfile')
+endfunc
+
+func Test_nowrite_quit_split()
+ " Prevent exiting by opening a help window.
+ e! Xfile
+ help
+ wincmd w
+ exe winnr() . 'q'
+
+ if has('timers')
+ " timer will not run if "exiting" is still set
+ let g:flag = 0
+ call timer_start(1, 'SetFlag')
+ sleep 50m
+ call assert_equal(1, g:flag)
+ unlet g:flag
+ endif
+ bwipe Xfile
+endfunc
diff --git a/src/version.c b/src/version.c
index 451eb36c86..efdc5abcf4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1190,
+/**/
1189,
/**/
1188,