diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index b38c55c3e4..0bb74f5348 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -503,8 +503,9 @@ export class DiffViewProvider { // Pre-open the file as a text document to ensure it doesn't open in preview mode // This fixes issues with files that have custom editor associations (like markdown preview) + const showOptions = { preview: false, viewColumn: vscode.ViewColumn.Active, preserveFocus: true } vscode.window - .showTextDocument(uri, { preview: false, viewColumn: vscode.ViewColumn.Active }) + .showTextDocument(uri, showOptions) .then(() => { // Execute the diff command after ensuring the file is open as text return vscode.commands.executeCommand( diff --git a/src/integrations/editor/__tests__/DiffViewProvider.spec.ts b/src/integrations/editor/__tests__/DiffViewProvider.spec.ts index 44b3aaba2a..4656203fb4 100644 --- a/src/integrations/editor/__tests__/DiffViewProvider.spec.ts +++ b/src/integrations/editor/__tests__/DiffViewProvider.spec.ts @@ -176,7 +176,13 @@ describe("DiffViewProvider", () => { // Mock showTextDocument to track when it's called vi.mocked(vscode.window.showTextDocument).mockImplementation(async (uri, options) => { callOrder.push("showTextDocument") - expect(options).toEqual({ preview: false, viewColumn: vscode.ViewColumn.Active }) + expect(options).toEqual( + expect.objectContaining({ + preview: false, + viewColumn: vscode.ViewColumn.Active, + preserveFocus: true, + }), + ) return mockEditor as any }) @@ -211,7 +217,7 @@ describe("DiffViewProvider", () => { // Verify that showTextDocument was called with preview: false expect(vscode.window.showTextDocument).toHaveBeenCalledWith( expect.objectContaining({ fsPath: `${mockCwd}/test.md` }), - { preview: false, viewColumn: vscode.ViewColumn.Active }, + expect.objectContaining({ preview: false, viewColumn: vscode.ViewColumn.Active, preserveFocus: true }), ) // Verify that the diff command was executed