diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index e225230e0b..0bf494854a 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -17,7 +17,6 @@ export class DiffViewProvider { originalContent: string | undefined private createdDirs: string[] = [] private documentWasOpen = false - private originalViewColumn?: vscode.ViewColumn // Store the original view column private relPath?: string private newContent?: string private activeDiffEditor?: vscode.TextEditor @@ -66,22 +65,11 @@ export class DiffViewProvider { .filter( (tab) => tab.input instanceof vscode.TabInputText && arePathsEqual(tab.input.uri.fsPath, absolutePath), ) - // Check if the document is already open and store its state - // DO NOT close the original tab to preserve pin status for (const tab of tabs) { - if (tab.input instanceof vscode.TabInputText && arePathsEqual(tab.input.uri.fsPath, absolutePath)) { - this.originalViewColumn = tab.group.viewColumn - this.documentWasOpen = true - // Ensure the tab is not dirty before proceeding, but don't close it - if (tab.isDirty) { - // Find the document associated with the tab and save it - const doc = vscode.workspace.textDocuments.find((d) => arePathsEqual(d.uri.fsPath, absolutePath)) - if (doc) { - await doc.save() - } - } - break // Found the relevant tab, no need to check others + if (!tab.isDirty) { + await vscode.window.tabGroups.close(tab) } + this.documentWasOpen = true } this.activeDiffEditor = await this.openDiffEditor() this.fadedOverlayController = new DecorationController("fadedOverlay", this.activeDiffEditor) @@ -168,31 +156,9 @@ export class DiffViewProvider { await updatedDocument.save() } - // Close the diff view first + await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { preview: false }) await this.closeAllDiffViews() - // If the original document was open, try to focus it. - // VS Code should handle showing the updated content automatically since the file was saved. - if (this.documentWasOpen && this.originalViewColumn) { - // Find the editor for the original document and reveal it - const originalEditor = vscode.window.visibleTextEditors.find( - (editor) => - arePathsEqual(editor.document.uri.fsPath, absolutePath) && - editor.viewColumn === this.originalViewColumn, - ) - if (originalEditor) { - // Reveal a range (e.g., the start) to ensure focus - const position = new vscode.Position(0, 0) - originalEditor.revealRange(new vscode.Range(position, position), vscode.TextEditorRevealType.AtTop) - } else { - // Fallback if editor not found (shouldn't happen often if documentWasOpen is true) - await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { - preview: false, - viewColumn: this.originalViewColumn, - }) - } - } - /* Getting diagnostics before and after the file edit is a better approach than automatically tracking problems in real-time. This method ensures we only @@ -271,28 +237,12 @@ export class DiffViewProvider { await vscode.workspace.applyEdit(edit) await updatedDocument.save() console.log(`File ${absolutePath} has been reverted to its original content.`) - // Close the diff view first - await this.closeAllDiffViews() - - // If the document was originally open, ensure it's focused. - // The revert logic already applied the original content and saved. - if (this.documentWasOpen && this.originalViewColumn) { - const originalEditor = vscode.window.visibleTextEditors.find( - (editor) => - arePathsEqual(editor.document.uri.fsPath, absolutePath) && - editor.viewColumn === this.originalViewColumn, - ) - if (originalEditor) { - const position = new vscode.Position(0, 0) - originalEditor.revealRange(new vscode.Range(position, position), vscode.TextEditorRevealType.AtTop) - } else { - // Fallback - await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { - preview: false, - viewColumn: this.originalViewColumn, - }) - } + if (this.documentWasOpen) { + await vscode.window.showTextDocument(vscode.Uri.file(absolutePath), { + preview: false, + }) } + await this.closeAllDiffViews() } // edit is done @@ -408,7 +358,6 @@ export class DiffViewProvider { this.originalContent = undefined this.createdDirs = [] this.documentWasOpen = false - this.originalViewColumn = undefined // Reset stored view column this.activeDiffEditor = undefined this.fadedOverlayController = undefined this.activeLineController = undefined