Skip to content
Permalink
Browse files

patch 8.1.0972: cannot switch from terminal window to next tabpage

Problem:    Cannot switch from terminal window to next tabpage.
Solution:   Make CTRL-W gt move to next tabpage.
  • Loading branch information...
brammool committed Feb 22, 2019
1 parent f6b4010 commit 72e83c1ae535e2ebc35b114d34d0a811eb62b068
Showing with 21 additions and 2 deletions.
  1. +2 −1 runtime/doc/terminal.txt
  2. +12 −0 src/testdir/test_terminal.vim
  3. +2 −0 src/version.c
  4. +5 −1 src/window.c
@@ -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'
@@ -1571,19 +1571,31 @@ 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)
set termwinkey=<C-L>
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()
@@ -779,6 +779,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
972,
/**/
971,
/**/
@@ -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 @@ do_window(
nchar = xchar;
goto wingotofile;
#endif
case 't': // CTRL-W gt: go to next tab page
goto_tabpage((int)Prenum);
break;

default:
beep_flush();
break;

0 comments on commit 72e83c1

Please sign in to comment.
You can’t perform that action at this time.