Skip to content

Commit 48a9149

Browse files
authored
Joh/overall-swordtail (microsoft#201218)
* don't grow wholeRange but accept it as given, pass tracked wholeRange when making a request * fix it
1 parent d9c9c88 commit 48a9149

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ export class InlineChatController implements IEditorContribution {
602602
prompt: this._activeSession.lastInput.value,
603603
attempt: this._activeSession.lastInput.attempt,
604604
selection: this._editor.getSelection(),
605-
wholeRange: this._activeSession.wholeRange.value,
605+
wholeRange: this._activeSession.wholeRange.trackedInitialRange,
606606
live: this._activeSession.editMode !== EditMode.Preview // TODO@jrieken let extension know what document is used for previewing
607607
};
608608

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ class SessionWholeRange {
114114
this._onDidChange.fire(this);
115115
}
116116

117+
get trackedInitialRange(): Range {
118+
const [first] = this._decorationIds;
119+
return this._textModel.getDecorationRange(first) ?? new Range(1, 1, 1, 1);
120+
}
121+
117122
get value(): Range {
118123
let result: Range | undefined;
119124
for (const id of this._decorationIds) {
@@ -518,8 +523,6 @@ export class InlineChatSessionService implements IInlineChatSessionService {
518523
wholeRange = raw.wholeRange ? Range.lift(raw.wholeRange) : editor.getSelection();
519524
}
520525

521-
// expand to whole lines
522-
wholeRange = new Range(wholeRange.startLineNumber, 1, wholeRange.endLineNumber, textModel.getLineMaxColumn(wholeRange.endLineNumber));
523526

524527
// install managed-marker for the decoration range
525528
const wholeRangeMgr = new SessionWholeRange(textModel, wholeRange);

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ suite('InteractiveChatController', function () {
181181
assert.ok(ctrl.getWidgetPosition() === undefined);
182182
});
183183

184-
test('wholeRange expands to whole lines, editor selection default', async function () {
184+
test('wholeRange does not expand to whole lines, editor selection default', async function () {
185185

186186
editor.setSelection(new Range(1, 1, 1, 3));
187187
ctrl = instaService.createInstance(TestController, editor);
@@ -204,7 +204,7 @@ suite('InteractiveChatController', function () {
204204

205205
const session = inlineChatSessionService.getSession(editor, editor.getModel()!.uri);
206206
assert.ok(session);
207-
assert.deepStrictEqual(session.wholeRange.value, new Range(1, 1, 1, 6));
207+
assert.deepStrictEqual(session.wholeRange.value, new Range(1, 1, 1, 3));
208208

209209
await ctrl.cancelSession();
210210
d.dispose();
@@ -234,7 +234,7 @@ suite('InteractiveChatController', function () {
234234

235235
const session = inlineChatSessionService.getSession(editor, editor.getModel()!.uri);
236236
assert.ok(session);
237-
assert.deepStrictEqual(session.wholeRange.value, new Range(1, 1, 1, 6));
237+
assert.deepStrictEqual(session.wholeRange.value, new Range(1, 1, 1, 3));
238238

239239
await ctrl.cancelSession();
240240
d.dispose();
@@ -252,7 +252,7 @@ suite('InteractiveChatController', function () {
252252

253253
const session = inlineChatSessionService.getSession(editor, editor.getModel()!.uri);
254254
assert.ok(session);
255-
assert.deepStrictEqual(session.wholeRange.value, new Range(1, 1, 1, 11));
255+
assert.deepStrictEqual(session.wholeRange.value, new Range(1, 1, 1, 6));
256256

257257
editor.setSelection(new Range(2, 1, 2, 1));
258258
editor.trigger('test', 'type', { text: 'a' });
@@ -294,13 +294,13 @@ suite('InteractiveChatController', function () {
294294

295295
const session = inlineChatSessionService.getSession(editor, editor.getModel()!.uri);
296296
assert.ok(session);
297-
assert.deepStrictEqual(session.wholeRange.value, new Range(3, 1, 3, 12));
297+
assert.deepStrictEqual(session.wholeRange.value, new Range(3, 1, 3, 3));
298298

299299
ctrl.acceptInput();
300300

301301
await ctrl.waitFor([State.MAKE_REQUEST, State.APPLY_RESPONSE, State.SHOW_RESPONSE, State.WAIT_FOR_INPUT]);
302302

303-
assert.deepStrictEqual(session.wholeRange.value, new Range(4, 1, 4, 12));
303+
assert.deepStrictEqual(session.wholeRange.value, new Range(4, 1, 4, 3));
304304

305305
await ctrl.cancelSession();
306306
await r;

0 commit comments

Comments
 (0)