🤖 Fix #5045: add optional tab argument to :tabmove

tabmove now accepts a second, optional argument selecting which tab to
move (resolved via tabFromIndex), defaulting to the current tab. This
makes `ex.execute_ex_on_completion_args tabmove -1` operate on the tab
selected in the buffer list instead of always the active one.
This commit is contained in:
Marc González Moratona 2026-08-31 00:45:01 +02:00 committed by Oliver Blanthorn
parent d806a7b83e
commit f1ceadc2d0
No known key found for this signature in database
GPG key ID: 2BB8C36BB504BFF3

View file

@ -3338,7 +3338,7 @@ export async function undo(item = "recent"): Promise<number> {
}
/**
* Move the current tab to be just in front of the index specified.
* Move a tab, defaulting to the current one, to be just in front of the index specified.
*
* Known bug: This supports relative movement with `tabmove +pos` and `tabmove -pos`, but autocomplete doesn't know that yet and will override positive and negative indexes.
*
@ -3349,10 +3349,12 @@ export async function undo(item = "recent"): Promise<number> {
* @param index New index for the current tab.
*
* 1,start,^ are aliases for the first index. 0,end,$ are aliases for the last index.
*
* @param tabToMove Which tab to move. Defaults to the current tab.
*/
//#background
export async function tabmove(index = "$") {
const aTab = await activeTab()
export async function tabmove(index = "$", tabToMove?: string) {
const aTab = await tabFromIndex(tabToMove)
if (index === "#") {
const previousTab = await prevActiveTab()
if (previousTab.index - aTab.index === 1) {