Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/inlineCompletions/browser/inlineCompletions.contribution.ts
5316 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 { withoutDuplicates } from '../../../../base/common/arrays.js';
7
import { Disposable } from '../../../../base/common/lifecycle.js';
8
import { autorun, observableFromEvent } from '../../../../base/common/observable.js';
9
import { ILanguageFeaturesService } from '../../../../editor/common/services/languageFeatures.js';
10
import { inlineCompletionProviderGetMatcher, providerIdSchemaUri } from '../../../../editor/contrib/inlineCompletions/browser/controller/commands.js';
11
import { Extensions, IJSONContributionRegistry } from '../../../../platform/jsonschemas/common/jsonContributionRegistry.js';
12
import { wrapInHotClass1 } from '../../../../platform/observable/common/wrapInHotClass.js';
13
import { Registry } from '../../../../platform/registry/common/platform.js';
14
import { IWorkbenchContribution, registerWorkbenchContribution2, WorkbenchPhase } from '../../../common/contributions.js';
15
import { InlineCompletionLanguageStatusBarContribution } from './inlineCompletionLanguageStatusBarContribution.js';
16
17
registerWorkbenchContribution2(InlineCompletionLanguageStatusBarContribution.Id, wrapInHotClass1(InlineCompletionLanguageStatusBarContribution.hot), WorkbenchPhase.Eventually);
18
19
export class InlineCompletionSchemaContribution extends Disposable implements IWorkbenchContribution {
20
public static Id = 'vs.contrib.InlineCompletionSchemaContribution';
21
22
constructor(
23
@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,
24
) {
25
super();
26
27
const registry = Registry.as<IJSONContributionRegistry>(Extensions.JSONContribution);
28
const inlineCompletionsProvider = observableFromEvent(this,
29
this._languageFeaturesService.inlineCompletionsProvider.onDidChange,
30
() => this._languageFeaturesService.inlineCompletionsProvider.allNoModel()
31
);
32
33
this._register(autorun(reader => {
34
const provider = inlineCompletionsProvider.read(reader);
35
registry.registerSchema(providerIdSchemaUri, {
36
enum: withoutDuplicates(provider.flatMap(p => inlineCompletionProviderGetMatcher(p))),
37
}, reader.store);
38
}));
39
}
40
}
41
42
registerWorkbenchContribution2(InlineCompletionSchemaContribution.Id, InlineCompletionSchemaContribution, WorkbenchPhase.Eventually);
43
44