patch 9.0.1472: ":drop fname" may change the last used tab page

Problem:    ":drop fname" may change the last used tab page.
Solution:   Restore the last used tab page when :drop has changed it.
            (closes #12087)
This commit is contained in:
Bram Moolenaar
2023-04-20 18:07:57 +01:00
parent be9624eb47
commit 8281a16efc
3 changed files with 24 additions and 0 deletions

View File

@ -1240,6 +1240,8 @@ do_arg_all(
need_mouse_correct = TRUE;
#endif
tabpage_T *new_lu_tp = curtab;
// Try closing all windows that are not in the argument list.
// Also close windows that are not full width;
// When 'hidden' or "forceit" set the buffer becomes hidden.
@ -1247,6 +1249,10 @@ do_arg_all(
// When the ":tab" modifier was used do this for all tab pages.
arg_all_close_unused_windows(&aall);
// Now set the last used tabpage to where we started.
if (valid_tabpage(new_lu_tp))
lastused_tabpage = new_lu_tp;
// Open a window for files in the argument list that don't have one.
// ARGCOUNT may change while doing this, because of autocommands.
if (count > aall.opened_len || count <= 0)

View File

@ -150,6 +150,22 @@ function Test_tabpage()
tabonly!
endfunc
func Test_tabpage_drop()
edit f1
tab split f2
tab split f3
normal! gt
call assert_equal(1, tabpagenr())
tab drop f3
call assert_equal(3, tabpagenr())
call assert_equal(1, tabpagenr('#'))
bwipe!
bwipe!
bwipe!
call assert_equal(1, tabpagenr('$'))
endfunc
" Test autocommands
function Test_tabpage_with_autocmd()
command -nargs=1 -bar C :call add(s:li, '=== ' . <q-args> . ' ===')|<args>

View File

@ -695,6 +695,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1472,
/**/
1471,
/**/