From 8281a16efc76197f7b0b2a385dffb44fce66d33e Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 20 Apr 2023 18:07:57 +0100 Subject: 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) --- src/arglist.c | 6 ++++++ src/testdir/test_tabpage.vim | 16 ++++++++++++++++ src/version.c | 2 ++ 3 files changed, 24 insertions(+) (limited to 'src') diff --git a/src/arglist.c b/src/arglist.c index bb31c45e9..a63f6c72f 100644 --- a/src/arglist.c +++ b/src/arglist.c @@ -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) diff --git a/src/testdir/test_tabpage.vim b/src/testdir/test_tabpage.vim index 83d6123cd..eed26f722 100644 --- a/src/testdir/test_tabpage.vim +++ b/src/testdir/test_tabpage.vim @@ -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, '=== ' . . ' ===')| diff --git a/src/version.c b/src/version.c index 99d1aecf6..611bd82ab 100644 --- a/src/version.c +++ b/src/version.c @@ -695,6 +695,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1472, /**/ 1471, /**/ -- cgit v1.2.1