diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-09-24 23:16:08 +0200 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-09-24 23:17:14 +0200 |
commit | 46bdae036ac4121e305fc3ed4ef3f9fc928dcb25 (patch) | |
tree | cf31879bd537495b93bd828efdab58940e5426dc | |
parent | edcba96c0088210927558b0e2583f3b689f457c4 (diff) |
patch 9.0.1934: :bwipe fails after switching window from aucmd_win.v9.0.1934
Problem: :bwipe fails after switching window from aucmd_win.
Solution: Decrement b_nwindows after switching back to aucmd_win.
closes: #13160
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
-rw-r--r-- | src/autocmd.c | 3 | ||||
-rw-r--r-- | src/testdir/test_autocmd.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 15 insertions, 3 deletions
diff --git a/src/autocmd.c b/src/autocmd.c index 63e56735b5..c09e12f404 100644 --- a/src/autocmd.c +++ b/src/autocmd.c @@ -1635,7 +1635,6 @@ aucmd_restbuf( { win_T *awp = aucmd_win[aco->use_aucmd_win_idx].auc_win; - --curbuf->b_nwindows; // Find "awp", it can't be closed, but it may be in another tab // page. Do not trigger autocommands here. block_autocmds(); @@ -1656,8 +1655,8 @@ aucmd_restbuf( } } win_found: + --curbuf->b_nwindows; #ifdef FEAT_JOB_CHANNEL - ; int save_stop_insert_mode = stop_insert_mode; // May need to stop Insert mode if we were in a prompt buffer. leaving_window(curwin); diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim index 1b9ecc94d1..419005aa6e 100644 --- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -3630,11 +3630,22 @@ func Test_closing_autocmd_window() END call v9.CheckScriptFailure(lines, 'E814:') au! BufEnter - only! bwipe Xa.txt bwipe Xb.txt endfunc +func Test_switch_window_in_autocmd_window() + edit Xa.txt + tabnew Xb.txt + autocmd BufEnter Xa.txt wincmd w + doautoall BufEnter + au! BufEnter + bwipe Xa.txt + call assert_false(bufexists('Xa.txt')) + bwipe Xb.txt + call assert_false(bufexists('Xb.txt')) +endfunc + func Test_bufwipeout_changes_window() " This should not crash, but we don't have any expectations about what " happens, changing window in BufWipeout has unpredictable results. diff --git a/src/version.c b/src/version.c index 31c1727007..68afda20a1 100644 --- a/src/version.c +++ b/src/version.c @@ -700,6 +700,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1934, +/**/ 1933, /**/ 1932, |