Skip to content

Commit 4144fb9

Browse files
authored
hide untitled file hint when inline chat session is starting (microsoft#185244)
microsoft/vscode-copilot#350
1 parent b51aabb commit 4144fb9

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/vs/workbench/contrib/codeEditor/browser/untitledTextEditorHint/untitledTextEditorHint.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
2020
import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
2121
import { IContentActionHandler, renderFormattedText } from 'vs/base/browser/formattedTextRenderer';
2222
import { ApplyFileSnippetAction } from 'vs/workbench/contrib/snippets/browser/commands/fileTemplateSnippets';
23+
import { IInlineChatSessionService } from 'vs/workbench/contrib/inlineChat/browser/inlineChatSession';
24+
import { isEqual } from 'vs/base/common/resources';
2325

2426
const $ = dom.$;
2527

@@ -37,7 +39,7 @@ export class UntitledTextEditorHintContribution implements IEditorContribution {
3739
@ICommandService private readonly commandService: ICommandService,
3840
@IConfigurationService private readonly configurationService: IConfigurationService,
3941
@IKeybindingService private readonly keybindingService: IKeybindingService,
40-
42+
@IInlineChatSessionService inlineChatSessionService: IInlineChatSessionService,
4143
) {
4244
this.toDispose = [];
4345
this.toDispose.push(this.editor.onDidChangeModel(() => this.update()));
@@ -47,6 +49,11 @@ export class UntitledTextEditorHintContribution implements IEditorContribution {
4749
this.update();
4850
}
4951
}));
52+
this.toDispose.push(inlineChatSessionService.onWillStartSession(uri => {
53+
if (isEqual(uri, this.editor.getModel()?.uri)) {
54+
this.untitledTextHintContentWidget?.dispose();
55+
}
56+
}));
5057
}
5158

5259
private update(): void {

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { isEqual } from 'vs/base/common/resources';
77
import { URI } from 'vs/base/common/uri';
8-
import { Event } from 'vs/base/common/event';
8+
import { Emitter, Event } from 'vs/base/common/event';
99
import { ResourceEdit, ResourceFileEdit, ResourceTextEdit } from 'vs/editor/browser/services/bulkEditService';
1010
import { TextEdit } from 'vs/editor/common/languages';
1111
import { IModelDeltaDecoration, ITextModel } from 'vs/editor/common/model';
@@ -357,6 +357,8 @@ export const IInlineChatSessionService = createDecorator<IInlineChatSessionServi
357357
export interface IInlineChatSessionService {
358358
_serviceBrand: undefined;
359359

360+
onWillStartSession: Event<URI>;
361+
360362
createSession(editor: IActiveCodeEditor, options: { editMode: EditMode; wholeRange?: IRange }, token: CancellationToken): Promise<Session | undefined>;
361363

362364
getSession(editor: ICodeEditor, uri: URI): Session | undefined;
@@ -379,6 +381,9 @@ export class InlineChatSessionService implements IInlineChatSessionService {
379381

380382
declare _serviceBrand: undefined;
381383

384+
private readonly _onWillStartSession = new Emitter<URI>();
385+
readonly onWillStartSession: Event<URI> = this._onWillStartSession.event;
386+
382387
private readonly _sessions = new Map<string, SessionData>();
383388
private readonly _keyComputers = new Map<string, ISessionKeyComputer>();
384389
private _recordings: Recording[] = [];
@@ -391,6 +396,12 @@ export class InlineChatSessionService implements IInlineChatSessionService {
391396
@ILogService private readonly _logService: ILogService,
392397
) { }
393398

399+
dispose() {
400+
this._onWillStartSession.dispose();
401+
this._sessions.forEach(x => x.store.dispose());
402+
this._sessions.clear();
403+
}
404+
394405

395406
async createSession(editor: IActiveCodeEditor, options: { editMode: EditMode; wholeRange?: Range }, token: CancellationToken): Promise<Session | undefined> {
396407

@@ -400,6 +411,8 @@ export class InlineChatSessionService implements IInlineChatSessionService {
400411
return undefined;
401412
}
402413

414+
this._onWillStartSession.fire(editor.getModel().uri);
415+
403416
const textModel = editor.getModel();
404417
const selection = editor.getSelection();
405418
let raw: IInlineChatSession | undefined | null;

0 commit comments

Comments
 (0)