summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-02-22 16:09:52 +0100
committerBram Moolenaar <Bram@vim.org>2019-02-22 16:09:52 +0100
commit72e83c1ae535e2ebc35b114d34d0a811eb62b068 (patch)
treee3d6124987eff7f8a154d07b5b054c219494858b
parentf6b401090e816b4216f783a9b85d21d9ad134ff8 (diff)
downloadvim-git-72e83c1ae535e2ebc35b114d34d0a811eb62b068.tar.gz
patch 8.1.0972: cannot switch from terminal window to next tabpagev8.1.0972
Problem: Cannot switch from terminal window to next tabpage. Solution: Make CTRL-W gt move to next tabpage.
-rw-r--r--runtime/doc/terminal.txt3
-rw-r--r--src/testdir/test_terminal.vim12
-rw-r--r--src/version.c2
-rw-r--r--src/window.c6
4 files changed, 21 insertions, 2 deletions
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index da89be436..0181d18de 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt* For Vim version 8.1. Last change: 2019 Feb 16
+*terminal.txt* For Vim version 8.1. Last change: 2019 Feb 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -80,6 +80,7 @@ Special in the terminal window: *CTRL-W_.* *CTRL-W_N*
Also works with the = register to insert the result of
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`
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 32cc21256..ee50b570b 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1571,6 +1571,8 @@ endfunc
func Test_terminal_termwinkey()
call assert_equal(1, winnr('$'))
let thiswin = win_getid()
+ tabnew
+ tabnext
let buf = Run_shell_in_terminal({})
let termwin = bufwinid(buf)
@@ -1578,12 +1580,22 @@ func Test_terminal_termwinkey()
call feedkeys("\<C-L>w", 'tx')
call assert_equal(thiswin, win_getid())
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())
+ tabnext
+ call assert_equal(tnr, tabpagenr())
+ call assert_equal(termwin, win_getid())
let job = term_getjob(buf)
call feedkeys("\<C-L>\<C-C>", 'tx')
call WaitForAssert({-> assert_equal("dead", job_status(job))})
set termwinkey&
+ tabnext
+ tabclose
endfunc
func Test_terminal_out_err()
diff --git a/src/version.c b/src/version.c
index 7c424e0d0..bd49a512c 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 */
/**/
+ 972,
+/**/
971,
/**/
970,
diff --git a/src/window.c b/src/window.c
index c4b543de3..83e3e9f93 100644
--- a/src/window.c
+++ b/src/window.c
@@ -67,7 +67,7 @@ static win_T *win_alloc(win_T *after, int hidden);
static char *m_onlyone = N_("Already only one window");
/*
- * all CTRL-W window commands are handled here, called from normal_cmd().
+ * All CTRL-W window commands are handled here, called from normal_cmd().
*/
void
do_window(
@@ -584,6 +584,10 @@ wingotofile:
nchar = xchar;
goto wingotofile;
#endif
+ case 't': // CTRL-W gt: go to next tab page
+ goto_tabpage((int)Prenum);
+ break;
+
default:
beep_flush();
break;