vim-patch:9.1.1961: :0tab behaves like :tab for :stag when 'swb' contains "newtab"

Problem:  :0tab behaves like :tab for :stag when 'switchbuf' contains
          "newtab" (after 9.1.1949).
Solution: Don't override cmod_tab if it's already non-zero (zeertzjq).

closes: vim/vim#18859

2b3566d89e
This commit is contained in:
zeertzjq
2025-12-08 08:10:22 +08:00
parent 69f4fd84aa
commit ff90032aa5
2 changed files with 6 additions and 1 deletions

View File

@@ -2869,7 +2869,7 @@ static int jumpto_tag(const char *lbuf_arg, int forceit, bool keep_help)
cmdmod.cmod_split |= WSP_VERT;
}
if (swb_flags & kOptSwbFlagNewtab) {
if ((swb_flags & kOptSwbFlagNewtab) && cmdmod.cmod_tab == 0) {
// If 'switchbuf' contains 'newtab', then use a new tabpage
cmdmod.cmod_tab = tabpage_index(curtab) + 1;
}

View File

@@ -163,7 +163,12 @@ func Test_tagjump_switchbuf()
call assert_equal(2, tabpagenr('$'))
call assert_equal(2, tabpagenr())
call assert_equal(2, line('.'))
0tab stag third
call assert_equal(3, tabpagenr('$'))
call assert_equal(1, tabpagenr())
call assert_equal(3, line('.'))
tabclose!
tabclose!
enew | only
set tags&