From f1b415b3abbcccb8b0d2aa1a41a45dd52de1a5ff Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 21 Apr 2023 09:02:30 +0800 Subject: vim-patch:9.0.1472: ":drop fname" may change the last used tab page (#23230) Problem: ":drop fname" may change the last used tab page. Solution: Restore the last used tab page when :drop has changed it. (closes vim/vim#12087) https://github.com/vim/vim/commit/8281a16efc76197f7b0b2a385dffb44fce66d33e Co-authored-by: Bram Moolenaar --- src/nvim/arglist.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/nvim') diff --git a/src/nvim/arglist.c b/src/nvim/arglist.c index 6735371576..6e3fc62c5b 100644 --- a/src/nvim/arglist.c +++ b/src/nvim/arglist.c @@ -1071,6 +1071,8 @@ static void do_arg_all(int count, int forceit, int keep_tabs) aall.alist->al_refcount++; arglist_locked = true; + tabpage_T *const 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. @@ -1078,6 +1080,11 @@ static void do_arg_all(int count, int forceit, int keep_tabs) // 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) { -- cgit