Path: blob/main/src/vs/workbench/contrib/inlineCompletions/browser/inlineCompletions.contribution.ts
5301 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { withoutDuplicates } from '../../../../base/common/arrays.js';6import { Disposable } from '../../../../base/common/lifecycle.js';7import { autorun, observableFromEvent } from '../../../../base/common/observable.js';8import { ILanguageFeaturesService } from '../../../../editor/common/services/languageFeatures.js';9import { inlineCompletionProviderGetMatcher, providerIdSchemaUri } from '../../../../editor/contrib/inlineCompletions/browser/controller/commands.js';10import { Extensions, IJSONContributionRegistry } from '../../../../platform/jsonschemas/common/jsonContributionRegistry.js';11import { wrapInHotClass1 } from '../../../../platform/observable/common/wrapInHotClass.js';12import { Registry } from '../../../../platform/registry/common/platform.js';13import { IWorkbenchContribution, registerWorkbenchContribution2, WorkbenchPhase } from '../../../common/contributions.js';14import { InlineCompletionLanguageStatusBarContribution } from './inlineCompletionLanguageStatusBarContribution.js';1516registerWorkbenchContribution2(InlineCompletionLanguageStatusBarContribution.Id, wrapInHotClass1(InlineCompletionLanguageStatusBarContribution.hot), WorkbenchPhase.Eventually);1718export class InlineCompletionSchemaContribution extends Disposable implements IWorkbenchContribution {19public static Id = 'vs.contrib.InlineCompletionSchemaContribution';2021constructor(22@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,23) {24super();2526const registry = Registry.as<IJSONContributionRegistry>(Extensions.JSONContribution);27const inlineCompletionsProvider = observableFromEvent(this,28this._languageFeaturesService.inlineCompletionsProvider.onDidChange,29() => this._languageFeaturesService.inlineCompletionsProvider.allNoModel()30);3132this._register(autorun(reader => {33const provider = inlineCompletionsProvider.read(reader);34registry.registerSchema(providerIdSchemaUri, {35enum: withoutDuplicates(provider.flatMap(p => inlineCompletionProviderGetMatcher(p))),36}, reader.store);37}));38}39}4041registerWorkbenchContribution2(InlineCompletionSchemaContribution.Id, InlineCompletionSchemaContribution, WorkbenchPhase.Eventually);424344