From 5addcc530377a7a56240535934fc359d36fb7bb7 Mon Sep 17 00:00:00 2001 From: Corwin Marsh Date: Mon, 21 Jul 2025 11:32:04 -0700 Subject: [PATCH 1/4] fix: Prevent unsaved changes popup when moving files --- src/commands/select.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/commands/select.ts b/src/commands/select.ts index 25f21f1..cff4d3e 100644 --- a/src/commands/select.ts +++ b/src/commands/select.ts @@ -30,7 +30,16 @@ function closeOldDocument(oldUri: vscode.Uri) { tab.input.uri.toString() === oldUri.toString() ); if (oldTab) { - await vscode.window.tabGroups.close(oldTab); + if (oldTab.isDirty) { + // Use the revert and close command to avoid save prompts for dirty tabs + await vscode.window.showTextDocument(oldUri); + await vscode.commands.executeCommand( + "workbench.action.revertAndCloseActiveEditor" + ); + } else { + // For clean tabs, just close normally + await vscode.window.tabGroups.close(oldTab); + } } } catch (error) { // Fallback method if tab API fails From 4b72598316a860749b77d168d40262dcac1021ba Mon Sep 17 00:00:00 2001 From: Corwin Marsh Date: Mon, 21 Jul 2025 12:51:03 -0700 Subject: [PATCH 2/4] test: update timeout --- src/test/extension.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/extension.test.ts b/src/test/extension.test.ts index d3fea45..3cc6eaa 100644 --- a/src/test/extension.test.ts +++ b/src/test/extension.test.ts @@ -377,7 +377,7 @@ suite("oil.code", () => { await saveFile(); - await sleep(100); + await sleep(200); await waitForDocumentText(["/000 ../", "/003 oil-file.md"]); From 36d28865e54f5ef33aec0647f6a2d72712de9126 Mon Sep 17 00:00:00 2001 From: Corwin Marsh Date: Mon, 21 Jul 2025 12:55:35 -0700 Subject: [PATCH 3/4] test: longer timeouts --- src/test/extension.test.ts | 2 +- src/test/utils/waitFor.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/test/extension.test.ts b/src/test/extension.test.ts index 3cc6eaa..1dca284 100644 --- a/src/test/extension.test.ts +++ b/src/test/extension.test.ts @@ -366,7 +366,7 @@ suite("oil.code", () => { editor.selection = new vscode.Selection(position3, position3); await vscode.commands.executeCommand("oil-code.select"); - await sleep(200); + await sleep(300); const editor3 = vscode.window.activeTextEditor; assert.ok(editor3, "No active editor3"); diff --git a/src/test/utils/waitFor.ts b/src/test/utils/waitFor.ts index 0d3a49c..edd5230 100644 --- a/src/test/utils/waitFor.ts +++ b/src/test/utils/waitFor.ts @@ -1,6 +1,5 @@ import * as assert from "assert"; import { tryCatch } from "../../tryCatch"; -import { error } from "console"; export async function waitFor( assertion: () => void, @@ -12,7 +11,7 @@ export async function waitFor( } ): Promise { const startTime = Date.now(); - const timeout = options?.timeout || 3000; + const timeout = options?.timeout || 4000; const interval = options?.interval || 100; const endTime = startTime + timeout; while (true) { From c098446f56d453b8b17df60ef6d443a80f2524c4 Mon Sep 17 00:00:00 2001 From: Corwin Marsh Date: Mon, 21 Jul 2025 13:00:29 -0700 Subject: [PATCH 4/4] test: more waits --- src/test/extension.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/extension.test.ts b/src/test/extension.test.ts index 1dca284..73dd5b1 100644 --- a/src/test/extension.test.ts +++ b/src/test/extension.test.ts @@ -374,6 +374,7 @@ suite("oil.code", () => { editBuilder.insert(new vscode.Position(0, 8), newline); editBuilder.insert(new vscode.Position(1, 0), `/002 oil-file.md`); }); + await waitForDocumentText(["/000 ../", "/002 oil-file.md"]); await saveFile(); @@ -477,7 +478,7 @@ suite("oil.code", () => { await sleep(100); editor.selection = new vscode.Selection(1, 5, 1, 5); await vscode.commands.executeCommand("oil-code.select"); - await sleep(300); + await sleep(500); const editor2 = vscode.window.activeTextEditor; assert.ok(editor2, "No active editor");