Skip to content

Commit a77b2c2

Browse files
authored
Merge pull request microsoft#232140 from microsoft/joh/residential-ermine
let review cancel the session when no or no real edits happened
2 parents 568e6a0 + 0c89e7c commit a77b2c2

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ export class ApplyCodeBlockOperation {
270270
let isOpen = true;
271271
const firstEdit = textEdits[0];
272272
editorToApply.revealLineInCenterIfOutsideViewport(firstEdit.range.startLineNumber);
273-
const promise = inlineChatController.reviewEdits(textEdits[0].range, AsyncIterableObject.fromArray(textEdits), tokenSource.token);
273+
const promise = inlineChatController.reviewEdits(textEdits[0].range, AsyncIterableObject.fromArray([textEdits]), tokenSource.token);
274274
promise.finally(() => {
275275
isOpen = false;
276276
tokenSource.dispose();

src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,7 +1164,7 @@ export class InlineChatController implements IEditorContribution {
11641164
return this._currentRun;
11651165
}
11661166

1167-
async reviewEdits(anchor: IRange, stream: AsyncIterable<TextEdit>, token: CancellationToken) {
1167+
async reviewEdits(anchor: IRange, stream: AsyncIterable<TextEdit[]>, token: CancellationToken) {
11681168
if (!this._editor.hasModel()) {
11691169
return false;
11701170
}
@@ -1183,14 +1183,22 @@ export class InlineChatController implements IEditorContribution {
11831183
await Event.toPromise(Event.filter(this._onDidEnterState.event, candidate => candidate === State.SHOW_REQUEST));
11841184

11851185
for await (const chunk of stream) {
1186-
session.chatModel.acceptResponseProgress(request, { kind: 'textEdit', uri: this._editor.getModel()!.uri, edits: [chunk] });
1186+
session.chatModel.acceptResponseProgress(request, { kind: 'textEdit', uri: this._editor.getModel()!.uri, edits: chunk });
11871187
}
11881188

11891189
if (token.isCancellationRequested) {
11901190
session.chatModel.cancelRequest(request);
11911191
} else {
11921192
session.chatModel.completeResponse(request);
11931193
}
1194+
1195+
await Event.toPromise(Event.filter(this._onDidEnterState.event, candidate => candidate === State.WAIT_FOR_INPUT));
1196+
1197+
if (session.hunkData.pending === 0) {
1198+
// no real changes, just cancel
1199+
this.cancelSession();
1200+
}
1201+
11941202
await run;
11951203
return true;
11961204
}

0 commit comments

Comments
 (0)