From dffb8661aa64cd0d80e4d2dc2fcbd44aacf0fee0 Mon Sep 17 00:00:00 2001 From: Don Jayamanne Date: Tue, 22 Apr 2025 18:35:32 +1000 Subject: [PATCH] Render chat changes in editor if diff is available (#246440) --- .../browser/chatEditing/chatEditingCodeEditorIntegration.ts | 4 ++-- .../browser/chatEditing/chatEditingModifiedDocumentEntry.ts | 2 +- .../notebook/chatEditingNotebookEditorIntegration.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.ts b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.ts index a5a53c49a68..f2c27df5ea5 100644 --- a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.ts +++ b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.ts @@ -70,6 +70,7 @@ export class ChatEditingCodeEditorIntegration implements IModifiedFileEntryEdito private readonly _entry: IModifiedFileEntry, private readonly _editor: ICodeEditor, documentDiffInfo: IObservable, + renderDiffImmediately: boolean, @IChatAgentService private readonly _chatAgentService: IChatAgentService, @IEditorService private readonly _editorService: IEditorService, @IAccessibilitySignalService private readonly _accessibilitySignalsService: IAccessibilitySignalService, @@ -147,8 +148,7 @@ export class ChatEditingCodeEditorIntegration implements IModifiedFileEntryEdito } // done: render diff - if (!_entry.isCurrentlyBeingModifiedBy.read(r)) { - + if (!_entry.isCurrentlyBeingModifiedBy.read(r) || renderDiffImmediately) { const isDiffEditor = this._editor.getOption(EditorOption.inDiffEditor); codeEditorObs.getOption(EditorOption.fontInfo).read(r); diff --git a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts index e6d83e24c38..44cc67fded2 100644 --- a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts +++ b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts @@ -507,6 +507,6 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie } satisfies IDocumentDiff2; }); - return this._instantiationService.createInstance(ChatEditingCodeEditorIntegration, this, codeEditor, diffInfo); + return this._instantiationService.createInstance(ChatEditingCodeEditorIntegration, this, codeEditor, diffInfo, false); } } diff --git a/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.ts b/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.ts index 3d20f5a1028..38f75783f3c 100644 --- a/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.ts +++ b/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.ts @@ -250,7 +250,7 @@ class ChatEditingNotebookEditorWidgetIntegration extends Disposable implements I } } else { const diff2 = observableValue(`diff${cell.handle}`, diff); - const integration = this.instantiationService.createInstance(ChatEditingCodeEditorIntegration, _entry, editor, diff2); + const integration = this.instantiationService.createInstance(ChatEditingCodeEditorIntegration, _entry, editor, diff2, true); this.cellEditorIntegrations.set(cell, { integration, diff: diff2 }); this._register(integration); this._register(editor.onDidDispose(() => {