aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/window.c12
-rw-r--r--test/functional/normal/tabpage_spec.lua38
2 files changed, 46 insertions, 4 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 4d105dd11e..8feedf2de6 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -85,10 +85,7 @@ do_window(
size_t len;
char cbuf[40];
- if (Prenum == 0)
- Prenum1 = 1;
- else
- Prenum1 = Prenum;
+ Prenum1 = Prenum == 0 ? 1 : Prenum;
# define CHECK_CMDWIN \
do { \
@@ -528,6 +525,13 @@ wingotofile:
cmdmod.tab = tabpage_index(curtab) + 1;
nchar = xchar;
goto wingotofile;
+ case 't': // CTRL-W gt: go to next tab page
+ goto_tabpage((int)Prenum);
+ break;
+
+ case 'T': // CTRL-W gT: go to previous tab page
+ goto_tabpage(-(int)Prenum1);
+ break;
case 'e':
if (curwin->w_floating || !ui_has(kUIMultigrid)) {
diff --git a/test/functional/normal/tabpage_spec.lua b/test/functional/normal/tabpage_spec.lua
new file mode 100644
index 0000000000..d1d6854b07
--- /dev/null
+++ b/test/functional/normal/tabpage_spec.lua
@@ -0,0 +1,38 @@
+local helpers = require('test.functional.helpers')(after_each)
+
+local clear = helpers.clear
+local command = helpers.command
+local eq = helpers.eq
+local feed = helpers.feed
+local eval = helpers.eval
+
+describe('tabpage', function()
+ before_each(clear)
+
+ it('advances to the next page via <C-W>gt', function()
+ -- add some tabpages
+ command('tabnew')
+ command('tabnew')
+ command('tabnew')
+
+ eq(4, eval('tabpagenr()'))
+
+ feed('<C-W>gt')
+
+ eq(1, eval('tabpagenr()'))
+ end)
+
+ it('retreats to the previous page via <C-W>gT', function()
+ -- add some tabpages
+ command('tabnew')
+ command('tabnew')
+ command('tabnew')
+
+ eq(4, eval('tabpagenr()'))
+
+ feed('<C-W>gT')
+
+ eq(3, eval('tabpagenr()'))
+ end)
+end)
+