From c34130d13a842ae0c0c1724d05800a954547d327 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 1 Dec 2019 22:43:16 -0800 Subject: API: deprecate nvim_command_output --- test/functional/autocmd/tabnewentered_spec.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'test/functional/autocmd/tabnewentered_spec.lua') diff --git a/test/functional/autocmd/tabnewentered_spec.lua b/test/functional/autocmd/tabnewentered_spec.lua index 59cac07b34..32e341184d 100644 --- a/test/functional/autocmd/tabnewentered_spec.lua +++ b/test/functional/autocmd/tabnewentered_spec.lua @@ -7,15 +7,15 @@ describe('TabNewEntered', function() it('matches when entering any new tab', function() clear() nvim('command', 'au! TabNewEntered * echom "tabnewentered:".tabpagenr().":".bufnr("")') - eq("tabnewentered:2:2", nvim('command_output', 'tabnew')) - eq("tabnewentered:3:3", nvim('command_output', 'tabnew test.x2')) + eq("tabnewentered:2:2", nvim('exec', 'tabnew', true)) + eq("tabnewentered:3:3", nvim('exec', 'tabnew test.x2', true)) end) end) describe('with FILE as ', function() it('matches when opening a new tab for FILE', function() nvim('command', 'au! TabNewEntered Xtest-tabnewentered echom "tabnewentered:match"') eq('tabnewentered:4:4\ntabnewentered:match', - nvim('command_output', 'tabnew Xtest-tabnewentered')) + nvim('exec', 'tabnew Xtest-tabnewentered', true)) end) end) describe('with CTRL-W T', function() @@ -24,7 +24,7 @@ describe('TabNewEntered', function() nvim('command', 'au! TabNewEntered * echom "entered"') nvim('command', 'tabnew test.x2') nvim('command', 'split') - eq('entered', nvim('command_output', 'execute "normal \\T"')) + eq('entered', nvim('exec', 'execute "normal \\T"', true)) end) end) end) -- cgit From cbc8d72fde4b19176028490934ff7a447afe523c Mon Sep 17 00:00:00 2001 From: butwerenotthereyet <58348703+butwerenotthereyet@users.noreply.github.com> Date: Thu, 2 Jan 2020 06:06:11 -0800 Subject: tabpage: track last-used tabpage #11626 In a multi-window scenario, it is possible to return focus to the last accessed window via n_CTRL-W_p. However, in the case of a multi-tab scenario, there was previously no way to return focus to the last accessed *tab*. Here, that ability is added via n_g. Additionally, the index of the previous tab is exposed via tabpagenr('#'), mirroring the existing functionality of winnr('#'). --- test/functional/autocmd/tabnewentered_spec.lua | 454 ++++++++++++++++++++++++- 1 file changed, 453 insertions(+), 1 deletion(-) (limited to 'test/functional/autocmd/tabnewentered_spec.lua') diff --git a/test/functional/autocmd/tabnewentered_spec.lua b/test/functional/autocmd/tabnewentered_spec.lua index 32e341184d..6240db2042 100644 --- a/test/functional/autocmd/tabnewentered_spec.lua +++ b/test/functional/autocmd/tabnewentered_spec.lua @@ -1,5 +1,13 @@ local helpers = require('test.functional.helpers')(after_each) -local clear, nvim, eq = helpers.clear, helpers.nvim, helpers.eq + +local clear = helpers.clear +local command = helpers.command +local dedent = helpers.dedent +local eval = helpers.eval +local eq = helpers.eq +local feed = helpers.feed +local nvim = helpers.nvim +local redir_exec = helpers.redir_exec describe('TabNewEntered', function() describe('au TabNewEntered', function() @@ -29,3 +37,447 @@ describe('TabNewEntered', function() end) end) end) + +describe('TabEnter', function() + before_each(clear) + it('has correct previous tab when entering any new tab', function() + command('augroup TEMP') + nvim('command', 'au! TabEnter * echom "tabenter:".tabpagenr().":".tabpagenr(\'#\')') + command('augroup END') + eq("tabenter:2:1", nvim('exec', 'tabnew', true)) + eq("tabenter:3:2", nvim('exec', 'tabnew test.x2', true)) + command('augroup! TEMP') + end) + it('has correct previous tab when entering any preexisting tab', function() + command('tabnew') + command('tabnew') + command('augroup TEMP') + nvim('command', 'au! TabEnter * echom "tabenter:".tabpagenr().":".tabpagenr(\'#\')') + command('augroup END') + eq("tabenter:1:3", nvim('exec', 'tabnext', true)) + eq("tabenter:2:1", nvim('exec', 'tabnext', true)) + command('augroup! TEMP') + end) +end) + +describe('tabpage/previous', function() + before_each(clear) + local function switches_to_previous_after_new_tab_creation_at_end(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + + -- The previous tab is now the third. + eq(3, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (third) tab + feed(characters) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + [No Name] + Tab page 3 + > [No Name] + Tab page 4 + [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the fourth. + eq(4, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous via g after new tab creation at end', + switches_to_previous_after_new_tab_creation_at_end('g')) + it('switches to previous via g. after new tab creation at end', switches_to_previous_after_new_tab_creation_at_end('g')) + it('switches to previous via . after new tab creation at end', switches_to_previous_after_new_tab_creation_at_end('')) + + local function switches_to_previous_after_new_tab_creation_in_middle(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Switch to the second tab + command('tabnext 2') + -- Add a new tab after the second tab + command('tabnew') + + -- The previous tab is now the second. + eq(2, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (second) tab + feed(characters) + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + > [No Name] + Tab page 3 + [No Name] + Tab page 4 + [No Name] + Tab page 5 + [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the third. + eq(3, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous via g after new tab creation in middle', + switches_to_previous_after_new_tab_creation_in_middle('g')) + it('switches to previous via g after new tab creation in middle', + switches_to_previous_after_new_tab_creation_in_middle('g')) + it('switches to previous via after new tab creation in middle', + switches_to_previous_after_new_tab_creation_in_middle('')) + + local function switches_to_previous_after_switching_to_next_tab(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Switch to the next (first) tab + command('tabnext') + + -- The previous tab is now the fourth. + eq(4, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (fourth) tab + feed(characters) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + [No Name] + Tab page 3 + [No Name] + Tab page 4 + > [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the first. + eq(1, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous via g after switching to next tab', + switches_to_previous_after_switching_to_next_tab('g')) + it('switches to previous via g after switching to next tab', + switches_to_previous_after_switching_to_next_tab('g')) + it('switches to previous via after switching to next tab', + switches_to_previous_after_switching_to_next_tab('')) + + local function switches_to_previous_after_switching_to_last_tab(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Switch to the next (first) tab + command('tabnext') + -- Switch to the last (fourth) tab. + command('tablast') + + -- The previous tab is now the second. + eq(1, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (second) tab + feed(characters) + + eq(dedent([=[ + + + Tab page 1 + > [No Name] + Tab page 2 + [No Name] + Tab page 3 + [No Name] + Tab page 4 + [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the fourth. + eq(4, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous after switching to last tab', + switches_to_previous_after_switching_to_last_tab('g')) + it('switches to previous after switching to last tab', + switches_to_previous_after_switching_to_last_tab('g')) + it('switches to previous after switching to last tab', + switches_to_previous_after_switching_to_last_tab('')) + + local function switches_to_previous_after_switching_to_previous_tab(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Switch to the previous (third) tab + command('tabprevious') + + -- The previous tab is now the fourth. + eq(4, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (fourth) tab + feed(characters) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + [No Name] + Tab page 3 + [No Name] + Tab page 4 + > [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the third. + eq(3, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous via g after switching to previous tab', + switches_to_previous_after_switching_to_previous_tab('g')) + it('switches to previous via g after switching to previous tab', + switches_to_previous_after_switching_to_previous_tab('g')) + it('switches to previous via after switching to previous tab', + switches_to_previous_after_switching_to_previous_tab('')) + + local function switches_to_previous_after_switching_to_first_tab(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Switch to the previous (third) tab + command('tabprevious') + -- Switch to the first tab + command('tabfirst') + + -- The previous tab is now the third. + eq(3, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (third) tab + feed(characters) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + [No Name] + Tab page 3 + > [No Name] + Tab page 4 + [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the first. + eq(1, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous via g after switching to first tab', + switches_to_previous_after_switching_to_first_tab('g')) + it('switches to previous via g after switching to first tab', + switches_to_previous_after_switching_to_first_tab('g')) + it('switches to previous via after switching to first tab', + switches_to_previous_after_switching_to_first_tab('')) + + local function switches_to_previous_after_numbered_tab_switch(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Switch to the second tab + command('tabnext 2') + + -- The previous tab is now the fourth. + eq(4, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (fourth) tab + feed(characters) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + [No Name] + Tab page 3 + [No Name] + Tab page 4 + > [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the second. + eq(2, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous via g after numbered tab switch', + switches_to_previous_after_numbered_tab_switch('g')) + it('switches to previous via g after numbered tab switch', + switches_to_previous_after_numbered_tab_switch('g')) + it('switches to previous via after numbered tab switch', + switches_to_previous_after_numbered_tab_switch('')) + + local function switches_to_previous_after_switching_to_previous(characters1, characters2) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Switch to the second tab + command('tabnext 2') + -- Switch to the previous (fourth) tab + feed(characters1) + + -- The previous tab is now the second. + eq(2, eval('tabpagenr(\'#\')')) + + -- Switch to the previous (second) tab + feed(characters2) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + > [No Name] + Tab page 3 + [No Name] + Tab page 4 + [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the fourth. + eq(4, eval('tabpagenr(\'#\')')) + end + end + it('switches to previous via g after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', 'g')) + it('switches to previous via g after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', 'g')) + it('switches to previous via after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', '')) + it('switches to previous via g after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', 'g')) + it('switches to previous via g after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', 'g')) + it('switches to previous via after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', '')) + it('switches to previous via g after switching to previous via ', + switches_to_previous_after_switching_to_previous('', 'g')) + it('switches to previous via g after switching to previous via ', + switches_to_previous_after_switching_to_previous('', 'g')) + it('switches to previous via after switching to previous via ', + switches_to_previous_after_switching_to_previous('', '')) + + local function does_not_switch_to_previous_after_closing_current_tab(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + -- Close the current (fourth tab) + command('wincmd c') + + -- The previous tab is now the "zeroth" -- there isn't one. + eq(0, eval('tabpagenr(\'#\')')) + + -- At this point, switching to the "previous" (i.e. fourth) tab would mean + -- switching to either a dangling or a null pointer. + feed(characters) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + [No Name] + Tab page 3 + > [No Name]]=]), + redir_exec('tabs') + ) + + -- The previous tab is now the "zero". + eq(0, eval('tabpagenr(\'#\')')) + end + end + it('does not switch to previous via g after closing current tab', + does_not_switch_to_previous_after_closing_current_tab('g')) + it('does not switch to previous via g after closing current tab', + does_not_switch_to_previous_after_closing_current_tab('g')) + it('does not switch to previous via after closing current tab', + does_not_switch_to_previous_after_closing_current_tab('')) + + local function does_not_switch_to_previous_after_entering_operator_pending(characters) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + + -- The previous tab is now the third. + eq(3, eval('tabpagenr(\'#\')')) + + -- Enter operator pending mode. + feed('d') + eq('no', eval('mode(1)')) + + -- At this point switching to the previous tab should have no effect + -- other than leaving operator pending mode. + feed(characters) + + -- Attempting to switch tabs returns us to normal mode. + eq('n', eval('mode()')) + + -- The current tab is still the fourth. + eq(4, eval('tabpagenr()')) + + -- The previous tab is still the third. + eq(3, eval('tabpagenr(\'#\')')) + end + end + it('does not switch to previous via g after entering operator pending', + does_not_switch_to_previous_after_entering_operator_pending('g')) + -- NOTE: When in operator pending mode, attempting to switch to previous has + -- the following effect: + -- - Ctrl-W exits operator pending mode + -- - g switches to the previous tab + -- In other words, the effect of "g" is to switch to the + -- previous tab even from operator pending mode, but only thanks to the + -- fact that the suffix after "" in "g" just happens to + -- be the same as the normal mode command to switch to the previous tab. + -- it('does not switch to previous via g after entering operator pending', + -- does_not_switch_to_previous_after_entering_operator_pending('g')) + it('does not switch to previous via after entering operator pending', + does_not_switch_to_previous_after_entering_operator_pending('')) +end) -- cgit From 29b1a4761a9fadfa9de05cfd9c8aad281fc29791 Mon Sep 17 00:00:00 2001 From: butwerenotthereyet <58348703+butwerenotthereyet@users.noreply.github.com> Date: Thu, 9 Jan 2020 07:31:16 -0800 Subject: tabpage: disallow go-to-previous in cmdline-win #11692 After cbc8d72fde4b19176028490934ff7a447afe523c when editing the command in the command editing window (q:, q/, q?) it was possible to switch to the previous tab. Doing so put Nvim in a bad state. Moreover, switching tabs via the other available mechanisms (gt, gT, gt, gT) is not possible when in the command editing window. Here, the behavior is prevented. It is no longer possible to switch to the previous tab when editing the command in the command editing window. The solution is to share code between gt, gT, and g. Specifically, goto_tabpage_lastused now calls through goto_tabpage rather than directly calling goto_tabpage_tp. Doing so works well because all the validation enjoyed by gt and gT is present in goto_tabpage. --- test/functional/autocmd/tabnewentered_spec.lua | 76 +++++++++++++++++++------- 1 file changed, 56 insertions(+), 20 deletions(-) (limited to 'test/functional/autocmd/tabnewentered_spec.lua') diff --git a/test/functional/autocmd/tabnewentered_spec.lua b/test/functional/autocmd/tabnewentered_spec.lua index 6240db2042..949786d8ff 100644 --- a/test/functional/autocmd/tabnewentered_spec.lua +++ b/test/functional/autocmd/tabnewentered_spec.lua @@ -439,32 +439,32 @@ describe('tabpage/previous', function() does_not_switch_to_previous_after_closing_current_tab('')) local function does_not_switch_to_previous_after_entering_operator_pending(characters) - return function() - -- Add three tabs for a total of four - command('tabnew') - command('tabnew') - command('tabnew') + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') - -- The previous tab is now the third. - eq(3, eval('tabpagenr(\'#\')')) + -- The previous tab is now the third. + eq(3, eval('tabpagenr(\'#\')')) - -- Enter operator pending mode. - feed('d') - eq('no', eval('mode(1)')) + -- Enter operator pending mode. + feed('d') + eq('no', eval('mode(1)')) - -- At this point switching to the previous tab should have no effect - -- other than leaving operator pending mode. - feed(characters) + -- At this point switching to the previous tab should have no effect + -- other than leaving operator pending mode. + feed(characters) - -- Attempting to switch tabs returns us to normal mode. - eq('n', eval('mode()')) + -- Attempting to switch tabs returns us to normal mode. + eq('n', eval('mode()')) - -- The current tab is still the fourth. - eq(4, eval('tabpagenr()')) + -- The current tab is still the fourth. + eq(4, eval('tabpagenr()')) - -- The previous tab is still the third. - eq(3, eval('tabpagenr(\'#\')')) - end + -- The previous tab is still the third. + eq(3, eval('tabpagenr(\'#\')')) + end end it('does not switch to previous via g after entering operator pending', does_not_switch_to_previous_after_entering_operator_pending('g')) @@ -480,4 +480,40 @@ describe('tabpage/previous', function() -- does_not_switch_to_previous_after_entering_operator_pending('g')) it('does not switch to previous via after entering operator pending', does_not_switch_to_previous_after_entering_operator_pending('')) + + local function cmdline_win_prevents_tab_switch(characters, completion_visible) + return function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('tabnew') + + -- The previous tab is now the third. + eq(3, eval('tabpagenr(\'#\')')) + + -- Edit : command line in command-line window + feed('q:') + + local cmdline_win_id = eval('win_getid()') + + -- At this point switching to the previous tab should have no effect. + feed(characters) + + -- Attempting to switch tabs maintains the current window. + eq(cmdline_win_id, eval('win_getid()')) + eq(completion_visible, eval('complete_info().pum_visible')) + + -- The current tab is still the fourth. + eq(4, eval('tabpagenr()')) + + -- The previous tab is still the third. + eq(3, eval('tabpagenr(\'#\')')) + end + end + it('cmdline-win prevents tab switch via g', + cmdline_win_prevents_tab_switch('g', 0)) + it('cmdline-win prevents tab switch via g', + cmdline_win_prevents_tab_switch('g', 1)) + it('cmdline-win prevents tab switch via ', + cmdline_win_prevents_tab_switch('', 0)) end) -- cgit From 8e385eb46a8b961a760e05b4cfa053cf713def62 Mon Sep 17 00:00:00 2001 From: We're Yet <58348703+butwerenotthereyet@users.noreply.github.com> Date: Sat, 18 Jan 2020 13:19:56 -0800 Subject: tabpage: :tabs indicates previous tabpage's curwin --- test/functional/autocmd/tabnewentered_spec.lua | 45 +++++++++++++++++++++----- 1 file changed, 37 insertions(+), 8 deletions(-) (limited to 'test/functional/autocmd/tabnewentered_spec.lua') diff --git a/test/functional/autocmd/tabnewentered_spec.lua b/test/functional/autocmd/tabnewentered_spec.lua index 949786d8ff..123dbd0824 100644 --- a/test/functional/autocmd/tabnewentered_spec.lua +++ b/test/functional/autocmd/tabnewentered_spec.lua @@ -85,7 +85,7 @@ describe('tabpage/previous', function() Tab page 3 > [No Name] Tab page 4 - [No Name]]=]), + # [No Name]]=]), redir_exec('tabs') ) @@ -122,7 +122,7 @@ describe('tabpage/previous', function() Tab page 2 > [No Name] Tab page 3 - [No Name] + # [No Name] Tab page 4 [No Name] Tab page 5 @@ -160,7 +160,7 @@ describe('tabpage/previous', function() Tab page 1 - [No Name] + # [No Name] Tab page 2 [No Name] Tab page 3 @@ -208,7 +208,7 @@ describe('tabpage/previous', function() Tab page 3 [No Name] Tab page 4 - [No Name]]=]), + # [No Name]]=]), redir_exec('tabs') ) @@ -246,7 +246,7 @@ describe('tabpage/previous', function() Tab page 2 [No Name] Tab page 3 - [No Name] + # [No Name] Tab page 4 > [No Name]]=]), redir_exec('tabs') @@ -284,7 +284,7 @@ describe('tabpage/previous', function() Tab page 1 - [No Name] + # [No Name] Tab page 2 [No Name] Tab page 3 @@ -326,7 +326,7 @@ describe('tabpage/previous', function() Tab page 1 [No Name] Tab page 2 - [No Name] + # [No Name] Tab page 3 [No Name] Tab page 4 @@ -372,7 +372,7 @@ describe('tabpage/previous', function() Tab page 3 [No Name] Tab page 4 - [No Name]]=]), + # [No Name]]=]), redir_exec('tabs') ) @@ -516,4 +516,33 @@ describe('tabpage/previous', function() cmdline_win_prevents_tab_switch('g', 1)) it('cmdline-win prevents tab switch via ', cmdline_win_prevents_tab_switch('', 0)) + + it(':tabs indicates correct prevtab curwin', function() + -- Add three tabs for a total of four + command('tabnew') + command('tabnew') + command('split') + command('vsplit') + feed('p') + command('tabnew') + + -- The previous tab is now the three. + eq(3, eval('tabpagenr(\'#\')')) + + eq(dedent([=[ + + + Tab page 1 + [No Name] + Tab page 2 + [No Name] + Tab page 3 + [No Name] + # [No Name] + [No Name] + Tab page 4 + > [No Name]]=]), + redir_exec('tabs') + ) + end) end) -- cgit From f245c0218adc9ff3452660dff97e62cea8e9a411 Mon Sep 17 00:00:00 2001 From: butwerenotthereyet <58348703+butwerenotthereyet@users.noreply.github.com> Date: Mon, 20 Jan 2020 15:14:51 -0800 Subject: tabpage: "tabnext #" switches to previous tab #11734 --- test/functional/autocmd/tabnewentered_spec.lua | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'test/functional/autocmd/tabnewentered_spec.lua') diff --git a/test/functional/autocmd/tabnewentered_spec.lua b/test/functional/autocmd/tabnewentered_spec.lua index 123dbd0824..dc2fd3e97d 100644 --- a/test/functional/autocmd/tabnewentered_spec.lua +++ b/test/functional/autocmd/tabnewentered_spec.lua @@ -97,6 +97,7 @@ describe('tabpage/previous', function() switches_to_previous_after_new_tab_creation_at_end('g')) it('switches to previous via g. after new tab creation at end', switches_to_previous_after_new_tab_creation_at_end('g')) it('switches to previous via . after new tab creation at end', switches_to_previous_after_new_tab_creation_at_end('')) + it('switches to previous via :tabn #. after new tab creation at end', switches_to_previous_after_new_tab_creation_at_end(':tabn #')) local function switches_to_previous_after_new_tab_creation_in_middle(characters) return function() @@ -140,6 +141,8 @@ describe('tabpage/previous', function() switches_to_previous_after_new_tab_creation_in_middle('g')) it('switches to previous via after new tab creation in middle', switches_to_previous_after_new_tab_creation_in_middle('')) + it('switches to previous via :tabn # after new tab creation in middle', + switches_to_previous_after_new_tab_creation_in_middle(':tabn #')) local function switches_to_previous_after_switching_to_next_tab(characters) return function() @@ -180,6 +183,8 @@ describe('tabpage/previous', function() switches_to_previous_after_switching_to_next_tab('g')) it('switches to previous via after switching to next tab', switches_to_previous_after_switching_to_next_tab('')) + it('switches to previous via :tabn # after switching to next tab', + switches_to_previous_after_switching_to_next_tab(':tabn #')) local function switches_to_previous_after_switching_to_last_tab(characters) return function() @@ -222,6 +227,8 @@ describe('tabpage/previous', function() switches_to_previous_after_switching_to_last_tab('g')) it('switches to previous after switching to last tab', switches_to_previous_after_switching_to_last_tab('')) + it('switches to previous after switching to last tab', + switches_to_previous_after_switching_to_last_tab(':tabn #')) local function switches_to_previous_after_switching_to_previous_tab(characters) return function() @@ -262,6 +269,8 @@ describe('tabpage/previous', function() switches_to_previous_after_switching_to_previous_tab('g')) it('switches to previous via after switching to previous tab', switches_to_previous_after_switching_to_previous_tab('')) + it('switches to previous via :tabn # after switching to previous tab', + switches_to_previous_after_switching_to_previous_tab(':tabn #')) local function switches_to_previous_after_switching_to_first_tab(characters) return function() @@ -304,6 +313,8 @@ describe('tabpage/previous', function() switches_to_previous_after_switching_to_first_tab('g')) it('switches to previous via after switching to first tab', switches_to_previous_after_switching_to_first_tab('')) + it('switches to previous via :tabn # after switching to first tab', + switches_to_previous_after_switching_to_first_tab(':tabn #')) local function switches_to_previous_after_numbered_tab_switch(characters) return function() @@ -344,6 +355,8 @@ describe('tabpage/previous', function() switches_to_previous_after_numbered_tab_switch('g')) it('switches to previous via after numbered tab switch', switches_to_previous_after_numbered_tab_switch('')) + it('switches to previous via :tabn # after numbered tab switch', + switches_to_previous_after_numbered_tab_switch(':tabn #')) local function switches_to_previous_after_switching_to_previous(characters1, characters2) return function() @@ -386,18 +399,32 @@ describe('tabpage/previous', function() switches_to_previous_after_switching_to_previous('g', 'g')) it('switches to previous via after switching to previous via g', switches_to_previous_after_switching_to_previous('g', '')) + it('switches to previous via :tabn # after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', ':tabn #')) it('switches to previous via g after switching to previous via g', switches_to_previous_after_switching_to_previous('g', 'g')) it('switches to previous via g after switching to previous via g', switches_to_previous_after_switching_to_previous('g', 'g')) it('switches to previous via after switching to previous via g', switches_to_previous_after_switching_to_previous('g', '')) + it('switches to previous via :tabn # after switching to previous via g', + switches_to_previous_after_switching_to_previous('g', ':tabn #')) it('switches to previous via g after switching to previous via ', switches_to_previous_after_switching_to_previous('', 'g')) it('switches to previous via g after switching to previous via ', switches_to_previous_after_switching_to_previous('', 'g')) it('switches to previous via after switching to previous via ', switches_to_previous_after_switching_to_previous('', '')) + it('switches to previous via :tabn # after switching to previous via ', + switches_to_previous_after_switching_to_previous('', ':tabn #')) + it('switches to previous via g after switching to previous via :tabn #', + switches_to_previous_after_switching_to_previous(':tabn #', 'g')) + it('switches to previous via g after switching to previous via :tabn #', + switches_to_previous_after_switching_to_previous(':tabn #', 'g')) + it('switches to previous via after switching to previous via ', + switches_to_previous_after_switching_to_previous(':tabn #', '')) + it('switches to previous via :tabn # after switching to previous via :tabn #', + switches_to_previous_after_switching_to_previous(':tabn #', ':tabn #')) local function does_not_switch_to_previous_after_closing_current_tab(characters) return function() @@ -437,6 +464,8 @@ describe('tabpage/previous', function() does_not_switch_to_previous_after_closing_current_tab('g')) it('does not switch to previous via after closing current tab', does_not_switch_to_previous_after_closing_current_tab('')) + it('does not switch to previous via :tabn # after closing current tab', + does_not_switch_to_previous_after_closing_current_tab(':tabn #')) local function does_not_switch_to_previous_after_entering_operator_pending(characters) return function() @@ -480,6 +509,11 @@ describe('tabpage/previous', function() -- does_not_switch_to_previous_after_entering_operator_pending('g')) it('does not switch to previous via after entering operator pending', does_not_switch_to_previous_after_entering_operator_pending('')) + -- NOTE: When in operator pending mode, pressing : leaves operator pending + -- mode and enters command mode, so :tabn # does in fact switch + -- tabs. + -- it('does not switch to previous via :tabn # after entering operator pending', + -- does_not_switch_to_previous_after_entering_operator_pending(':tabn #')) local function cmdline_win_prevents_tab_switch(characters, completion_visible) return function() @@ -516,6 +550,8 @@ describe('tabpage/previous', function() cmdline_win_prevents_tab_switch('g', 1)) it('cmdline-win prevents tab switch via ', cmdline_win_prevents_tab_switch('', 0)) + it('cmdline-win prevents tab switch via :tabn #', + cmdline_win_prevents_tab_switch(':tabn #', 0)) it(':tabs indicates correct prevtab curwin', function() -- Add three tabs for a total of four -- cgit