diff options
-rw-r--r-- | src/nvim/window.c | 12 | ||||
-rw-r--r-- | test/functional/normal/tabpage_spec.lua | 38 |
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) + |