]> granicus.if.org Git - vim/commitdiff
patch 8.2.2040: terminal buffer disappears even when 'bufhidden' is "hide" v8.2.2040
authorBram Moolenaar <Bram@vim.org>
Tue, 24 Nov 2020 18:36:16 +0000 (19:36 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 24 Nov 2020 18:36:16 +0000 (19:36 +0100)
Problem:    Terminal buffer disappears even when 'bufhidden' is "hide".
            (Sergey Vlasov)
Solution:   Check 'bufhiddden' when a terminal buffer becomes hidden.
            (closes #7358)

src/buffer.c
src/testdir/test_terminal.vim
src/version.c

index a4c6a00b531d52d9e63d535229228e36245182ae..8497bcf3aaaf7bb17de4143635da0cbcdc0bd611 100644 (file)
@@ -552,6 +552,11 @@ close_buffer(
                unload_buf = FALSE;
            }
        }
+       else if (buf->b_p_bh[0] == 'h' && !del_buf)
+       {
+           // Hide a terminal buffer.
+           unload_buf = FALSE;
+       }
        else
        {
            // A terminal buffer is wiped out if the job has finished.
index cef379a575de07e562b852953ce9297a1db0510a..8d47c0886c0fce738ab14edd138e6a90ff2ccb28 100644 (file)
@@ -123,7 +123,7 @@ func Test_terminal_split_quit()
   unlet g:job
 endfunc
 
-func Test_terminal_hide_buffer()
+func Test_terminal_hide_buffer_job_running()
   let buf = Run_shell_in_terminal({})
   setlocal bufhidden=hide
   quit
@@ -140,6 +140,25 @@ func Test_terminal_hide_buffer()
   unlet g:job
 endfunc
 
+func Test_terminal_hide_buffer_job_finished()
+  term echo hello
+  let buf = bufnr()
+  setlocal bufhidden=hide
+  call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))})
+  call assert_true(bufloaded(buf))
+  call assert_true(buflisted(buf))
+  edit Xasdfasdf
+  call assert_true(bufloaded(buf))
+  call assert_true(buflisted(buf))
+  exe buf .. 'buf'
+  call assert_equal(buf, bufnr())
+  setlocal bufhidden=
+  edit Xasdfasdf
+  call assert_false(bufloaded(buf))
+  call assert_false(buflisted(buf))
+  bwipe Xasdfasdf
+endfunc
+
 func s:Nasty_exit_cb(job, st)
   exe g:buf . 'bwipe!'
   let g:buf = 0
index 91c820de098272c70f63c52c68bfb335de55a6e9..19757ca0588f905a49d55cf908664537b3c37cf9 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2040,
 /**/
     2039,
 /**/