From 6f6501735cbfc2182e807da8ab2a3ffc04a20597 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Sun, 31 May 2026 16:51:32 -0700 Subject: [PATCH] Reset the winfixheight option when a quickfix buffer is deleted from a window --- src/buffer.c | 5 +++++ src/testdir/test_quickfix.vim | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/buffer.c b/src/buffer.c index 07176fbc434ac8..d28718329318f3 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -736,6 +736,11 @@ close_buffer( unblock_autocmds(); } + // When a quickfix buffer is deleted from a window, clear the + // 'winfixheight' option. + if (bt_quickfix(buf) && win_valid && win->w_buffer == buf) + win->w_p_wfh = FALSE; + // Remember if the buffer may be hidden soon, or is already hidden. hiding_buf = buf->b_nwindows <= 0 || ((win_valid || closed_popup) && win->w_buffer == buf && buf->b_nwindows == 1); diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index c656d205f029eb..b0c4475ccd383e 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -7090,4 +7090,20 @@ func Test_set_qftf_in_sandbox() call Xtest_set_qftf_in_sandbox('l') endfunc +" Test for the 'statusline' height remaining at one when the quickfix buffer +" is wiped out when quickfix window is the only window open. +func Test_qf_statusline_height() + %bw! + copen + wincmd p + let prev_wh = winheight('.') + wincmd p + only + bw! + copen + wincmd p + call assert_equal(prev_wh, winheight('.')) + %bw! +endfunc + " vim: shiftwidth=2 sts=2 expandtab