patch 8.1.0974: cannot switch from terminal window to previous tabpage
Problem: Cannot switch from terminal window to previous tabpage.
Solution: Make CTRL-W gT move to previous tabpage.
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 0181d18..297f37a 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -81,6 +81,7 @@
evaluating an expression.
CTRL-W CTRL-C ends the job, see below |t_CTRL-W_CTRL-C|
CTRL-W gt go to next tabpage, same as `gt`
+ CTRL-W gT go to previous tabpage, same as `gT`
See option 'termwinkey' for specifying another key instead of CTRL-W that
will work like CTRL-W. However, typing 'termwinkey' twice sends 'termwinkey'
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index ee50b57..e5a7be5 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1569,10 +1569,14 @@
endfunc
func Test_terminal_termwinkey()
- call assert_equal(1, winnr('$'))
- let thiswin = win_getid()
- tabnew
+ " make three tabpages, terminal in the middle
+ 0tabnew
tabnext
+ tabnew
+ tabprev
+ call assert_equal(1, winnr('$'))
+ call assert_equal(2, tabpagenr())
+ let thiswin = win_getid()
let buf = Run_shell_in_terminal({})
let termwin = bufwinid(buf)
@@ -1582,11 +1586,16 @@
call feedkeys("\<C-W>w", 'tx')
call assert_equal(termwin, win_getid())
- let tnr = tabpagenr()
call feedkeys("\<C-L>gt", "xt")
- call assert_notequal(tnr, tabpagenr())
+ call assert_equal(3, tabpagenr())
+ tabprev
+ call assert_equal(2, tabpagenr())
+ call assert_equal(termwin, win_getid())
+
+ call feedkeys("\<C-L>gT", "xt")
+ call assert_equal(1, tabpagenr())
tabnext
- call assert_equal(tnr, tabpagenr())
+ call assert_equal(2, tabpagenr())
call assert_equal(termwin, win_getid())
let job = term_getjob(buf)
@@ -1596,6 +1605,8 @@
set termwinkey&
tabnext
tabclose
+ tabprev
+ tabclose
endfunc
func Test_terminal_out_err()
diff --git a/src/version.c b/src/version.c
index cca92c8..cd2554a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -780,6 +780,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 974,
+/**/
973,
/**/
972,
diff --git a/src/window.c b/src/window.c
index 83e3e9f..074c731 100644
--- a/src/window.c
+++ b/src/window.c
@@ -87,10 +87,7 @@
#endif
char_u cbuf[40];
- if (Prenum == 0)
- Prenum1 = 1;
- else
- Prenum1 = Prenum;
+ Prenum1 = Prenum == 0 ? 1 : Prenum;
#ifdef FEAT_CMDWIN
# define CHECK_CMDWIN \
@@ -588,6 +585,10 @@
goto_tabpage((int)Prenum);
break;
+ case 'T': // CTRL-W gT: go to previous tab page
+ goto_tabpage(-(int)Prenum1);
+ break;
+
default:
beep_flush();
break;