fix: preserve chat input focus during automated file editing (#4574)

- Add preserveFocus: true to showTextDocument call in DiffViewProvider
- Prevents focus from being stolen from chat input during auto-mode file edits
- Update tests to reflect new expected behavior

Fixes #4574
This commit is contained in:
hannesrudolph 2025-06-30 10:06:00 -06:00
parent 24eb6e4c29
commit 99e7febd5f
2 changed files with 3 additions and 3 deletions

View file

@ -504,7 +504,7 @@ 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)
vscode.window
.showTextDocument(uri, { preview: false, viewColumn: vscode.ViewColumn.Active })
.showTextDocument(uri, { preview: false, viewColumn: vscode.ViewColumn.Active, preserveFocus: true })
.then(() => {
// Execute the diff command after ensuring the file is open as text
return vscode.commands.executeCommand(

View file

@ -176,7 +176,7 @@ 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({ preview: false, viewColumn: vscode.ViewColumn.Active, preserveFocus: true })
return mockEditor as any
})
@ -211,7 +211,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 },
{ preview: false, viewColumn: vscode.ViewColumn.Active, preserveFocus: true },
)
// Verify that the diff command was executed