Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/chat/browser/chatEdinputInputContentProvider.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Disposable } from '../../../../base/common/lifecycle.js';
7
import { Schemas } from '../../../../base/common/network.js';
8
import { URI } from '../../../../base/common/uri.js';
9
import { ILanguageService } from '../../../../editor/common/languages/language.js';
10
import { ITextModel } from '../../../../editor/common/model.js';
11
import { IModelService } from '../../../../editor/common/services/model.js';
12
import { ITextModelContentProvider, ITextModelService } from '../../../../editor/common/services/resolverService.js';
13
14
15
export class ChatInputBoxContentProvider extends Disposable implements ITextModelContentProvider {
16
constructor(
17
@ITextModelService textModelService: ITextModelService,
18
@IModelService private readonly modelService: IModelService,
19
@ILanguageService private readonly languageService: ILanguageService
20
) {
21
super();
22
this._register(textModelService.registerTextModelContentProvider(Schemas.vscodeChatInput, this));
23
}
24
25
async provideTextContent(resource: URI): Promise<ITextModel | null> {
26
const existing = this.modelService.getModel(resource);
27
if (existing) {
28
return existing;
29
}
30
return this.modelService.createModel('', this.languageService.createById('chatinput'), resource);
31
}
32
}
33
34