summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-02-22 17:56:43 +0100
committerBram Moolenaar <Bram@vim.org>2019-02-22 17:56:43 +0100
commit882d02eeb571a13a502fe82a04c9eaffa630c294 (patch)
treeb5a3b2e670f613526993632c19391c259c23b9c0
parentcd62512c5595fa1f7a7f2c6ec1a90ea6bde3ad50 (diff)
patch 8.1.0974: cannot switch from terminal window to previous tabpagev8.1.0974
Problem: Cannot switch from terminal window to previous tabpage. Solution: Make CTRL-W gT move to previous tabpage.
-rw-r--r--runtime/doc/terminal.txt1
-rw-r--r--src/testdir/test_terminal.vim21
-rw-r--r--src/version.c2
-rw-r--r--src/window.c9
4 files changed, 24 insertions, 9 deletions
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 0181d18def..297f37a6f1 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -81,6 +81,7 @@ Special in the terminal window: *CTRL-W_.* *CTRL-W_N*
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 ee50b570b2..e5a7be5a8e 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1569,10 +1569,14 @@ func Test_terminal_termwinsize_mininmum()
endfunc
func Test_terminal_termwinkey()
+ " 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()
- tabnew
- tabnext
let buf = Run_shell_in_terminal({})
let termwin = bufwinid(buf)
@@ -1582,11 +1586,16 @@ func Test_terminal_termwinkey()
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 @@ func Test_terminal_termwinkey()
set termwinkey&
tabnext
tabclose
+ tabprev
+ tabclose
endfunc
func Test_terminal_out_err()
diff --git a/src/version.c b/src/version.c
index cca92c8ee5..cd2554a979 100644
--- a/src/version.c
+++ b/src/version.c
@@ -780,6 +780,8 @@ static char *(features[]) =
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 83e3e9f935..074c731ea8 100644
--- a/src/window.c
+++ b/src/window.c
@@ -87,10 +87,7 @@ do_window(
#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 @@ wingotofile:
goto_tabpage((int)Prenum);
break;
+ case 'T': // CTRL-W gT: go to previous tab page
+ goto_tabpage(-(int)Prenum1);
+ break;
+
default:
beep_flush();
break;