Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/completions/vscode-node/copilotInlineCompletionItemProviderService.ts
13399 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 { InlineCompletionItemProvider } from 'vscode';
7
import { Disposable } from '../../../util/vs/base/common/lifecycle';
8
import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';
9
import { createContext, setup } from '../../completions-core/vscode-node/completionsServiceBridges';
10
import { CopilotInlineCompletionItemProvider } from '../../completions-core/vscode-node/extension/src/vscodeInlineCompletionItemProvider';
11
import { ICopilotInlineCompletionItemProviderService } from '../common/copilotInlineCompletionItemProviderService';
12
13
export class CopilotInlineCompletionItemProviderService extends Disposable implements ICopilotInlineCompletionItemProviderService {
14
readonly _serviceBrand: undefined;
15
16
private _provider: InlineCompletionItemProvider | undefined;
17
private _completionsInstantiationService: IInstantiationService | undefined;
18
19
constructor(
20
@IInstantiationService private readonly _instantiationService: IInstantiationService,
21
) {
22
super();
23
}
24
25
getOrCreateInstantiationService(): IInstantiationService {
26
if (!this._completionsInstantiationService) {
27
this._completionsInstantiationService = this._instantiationService.invokeFunction(createContext, this._store);
28
}
29
return this._completionsInstantiationService;
30
}
31
32
getOrCreateProvider(): InlineCompletionItemProvider {
33
if (!this._provider) {
34
this._completionsInstantiationService = this.getOrCreateInstantiationService();
35
this._completionsInstantiationService.invokeFunction(setup, this._store);
36
this._provider = this._register(this._completionsInstantiationService.createInstance(CopilotInlineCompletionItemProvider));
37
}
38
return this._provider;
39
}
40
}
41
42