patch 8.2.0862: ":term ++curwin" makes the current buffer hidden
Problem: ":term ++curwin" makes the current buffer hidden. (Harm te
Hennepe)
Solution: Do not hide the current buffer. (closes #6170)
diff --git a/src/terminal.c b/src/terminal.c
index 86a1a0f..5514c73 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -459,9 +459,9 @@
return NULL;
}
if (do_ecmd(0, NULL, NULL, &split_ea, ECMD_ONE,
- ECMD_HIDE
- + ((flags & TERM_START_FORCEIT) ? ECMD_FORCEIT : 0),
- curwin) == FAIL)
+ (buf_hide(curwin->w_buffer) ? ECMD_HIDE : 0)
+ + ((flags & TERM_START_FORCEIT) ? ECMD_FORCEIT : 0),
+ curwin) == FAIL)
{
vim_free(term);
return NULL;
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index a8a549c..7430eb2 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -450,17 +450,21 @@
let cmd = Get_cat_123_cmd()
call assert_equal(1, winnr('$'))
- split dummy
+ split Xdummy
+ call setline(1, 'dummy')
+ write
+ call assert_equal(1, getbufinfo('Xdummy')[0].loaded)
exe 'terminal ++curwin ' . cmd
call assert_equal(2, winnr('$'))
+ call assert_equal(0, getbufinfo('Xdummy')[0].loaded)
bwipe!
- split dummy
+ split Xdummy
call term_start(cmd, {'curwin': 1})
call assert_equal(2, winnr('$'))
bwipe!
- split dummy
+ split Xdummy
call setline(1, 'change')
call assert_fails('terminal ++curwin ' . cmd, 'E37:')
call assert_equal(2, winnr('$'))
@@ -468,15 +472,16 @@
call assert_equal(2, winnr('$'))
bwipe!
- split dummy
+ split Xdummy
call setline(1, 'change')
call assert_fails("call term_start(cmd, {'curwin': 1})", 'E37:')
call assert_equal(2, winnr('$'))
bwipe!
- split dummy
+ split Xdummy
bwipe!
call delete('Xtext')
+ call delete('Xdummy')
endfunc
func s:get_sleep_cmd()
diff --git a/src/version.c b/src/version.c
index d1ebe5b..c39e712 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 862,
+/**/
861,
/**/
860,