diff --git a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.ts b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.ts index 2779b1fa483e..46f478ff2b3f 100644 --- a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.ts +++ b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.ts @@ -90,9 +90,13 @@ class ChatEditorOverlayWidget { assertType(this.label); const { changeCount, activeIdx } = that._navigationBearings.read(r); - const n = activeIdx === -1 ? '?' : `${activeIdx + 1}`; - const m = changeCount === -1 ? '?' : `${changeCount}`; - this.label.innerText = localize('nOfM', "{0} of {1}", n, m); + + if (changeCount > 0) { + const n = activeIdx === -1 ? '1' : `${activeIdx + 1}`; + this.label.innerText = localize('nOfM', "{0} of {1}", n, changeCount); + } else { + this.label.innerText = localize('0Of0', "0 of 0"); + } this.updateTooltip(); })); diff --git a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts index 1f90c36696c5..bd7eb6898c41 100644 --- a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts +++ b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.ts @@ -87,7 +87,7 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie private _edit: OffsetEdit = OffsetEdit.empty; private _isEditFromUs: boolean = false; private _allEditsAreFromUs: boolean = true; - private _diffOperation: Promise | undefined; + private _diffOperation: Promise | undefined; private _diffOperationIds: number = 0; private readonly _diffInfo = observableValue(this, nullDocumentDiff); @@ -209,8 +209,11 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie } override async acceptStreamingEditsEnd(tx: ITransaction) { - await this._diffOperation; + const diff = await this._diffOperation; super.acceptStreamingEditsEnd(tx); + if (diff?.identical) { + this.accept(tx); + } } protected override _resetEditsState(tx: ITransaction): void { @@ -385,10 +388,10 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie } } - private async _updateDiffInfo(): Promise { + private async _updateDiffInfo(): Promise { if (this.docSnapshot.isDisposed() || this.doc.isDisposed()) { - return; + return undefined; } const docVersionNow = this.doc.getVersionId(); @@ -404,7 +407,7 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie ); if (this.docSnapshot.isDisposed() || this.doc.isDisposed()) { - return; + return undefined; } // only update the diff if the documents didn't change in the meantime @@ -412,7 +415,9 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie const diff2 = diff ?? nullDocumentDiff; this._diffInfo.set(diff2, undefined); this._edit = OffsetEdits.fromLineRangeMapping(this.docSnapshot, this.doc, diff2.changes); + return diff2; } + return undefined; } protected override async _doAccept(tx: ITransaction | undefined): Promise {