Skip to content

Commit c9f8b84

Browse files
committed
patch 8.2.2040: terminal buffer disappears even when 'bufhidden' is "hide"
Problem: Terminal buffer disappears even when 'bufhidden' is "hide". (Sergey Vlasov) Solution: Check 'bufhiddden' when a terminal buffer becomes hidden. (closes #7358)
1 parent 8e6be34 commit c9f8b84

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

src/buffer.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,11 @@ close_buffer(
552552
unload_buf = FALSE;
553553
}
554554
}
555+
else if (buf->b_p_bh[0] == 'h' && !del_buf)
556+
{
557+
// Hide a terminal buffer.
558+
unload_buf = FALSE;
559+
}
555560
else
556561
{
557562
// A terminal buffer is wiped out if the job has finished.

src/testdir/test_terminal.vim

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func Test_terminal_split_quit()
123123
unlet g:job
124124
endfunc
125125

126-
func Test_terminal_hide_buffer()
126+
func Test_terminal_hide_buffer_job_running()
127127
let buf = Run_shell_in_terminal({})
128128
setlocal bufhidden=hide
129129
quit
@@ -140,6 +140,25 @@ func Test_terminal_hide_buffer()
140140
unlet g:job
141141
endfunc
142142

143+
func Test_terminal_hide_buffer_job_finished()
144+
term echo hello
145+
let buf = bufnr()
146+
setlocal bufhidden=hide
147+
call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))})
148+
call assert_true(bufloaded(buf))
149+
call assert_true(buflisted(buf))
150+
edit Xasdfasdf
151+
call assert_true(bufloaded(buf))
152+
call assert_true(buflisted(buf))
153+
exe buf .. 'buf'
154+
call assert_equal(buf, bufnr())
155+
setlocal bufhidden=
156+
edit Xasdfasdf
157+
call assert_false(bufloaded(buf))
158+
call assert_false(buflisted(buf))
159+
bwipe Xasdfasdf
160+
endfunc
161+
143162
func s:Nasty_exit_cb(job, st)
144163
exe g:buf . 'bwipe!'
145164
let g:buf = 0

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -750,6 +750,8 @@ static char *(features[]) =
750750

751751
static int included_patches[] =
752752
{ /* Add new patch number below this line */
753+
/**/
754+
2040,
753755
/**/
754756
2039,
755757
/**/

0 commit comments

Comments
 (0)