Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/completions/vscode-node/completionsUnificationContribution.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 { languages } from 'vscode';
7
import { ITelemetryService } from '../../../platform/telemetry/common/telemetry';
8
import { Event } from '../../../util/vs/base/common/event';
9
import { Disposable } from '../../../util/vs/base/common/lifecycle';
10
import { autorun, DebugOwner, observableFromEvent } from '../../../util/vs/base/common/observableInternal';
11
12
export class CompletionsUnificationContribution extends Disposable {
13
14
constructor(
15
@ITelemetryService telemetryService: ITelemetryService,
16
) {
17
super();
18
19
const unificationState = unificationStateObservable(this);
20
21
this._register(autorun(reader => {
22
const state = unificationState.read(reader);
23
telemetryService.setAdditionalExpAssignments(state?.expAssignments ?? []);
24
}));
25
}
26
}
27
28
export function unificationStateObservable(owner: DebugOwner) {
29
return observableFromEvent(
30
owner,
31
l => (languages as languagesMaybeWithUnification).onDidChangeCompletionsUnificationState?.(l) ?? Disposable.None,
32
() => (languages as languagesMaybeWithUnification).inlineCompletionsUnificationState
33
);
34
}
35
36
interface languagesMaybeWithUnification {
37
readonly inlineCompletionsUnificationState?: InlineCompletionsUnificationState;
38
readonly onDidChangeCompletionsUnificationState?: Event<void>;
39
}
40
41
interface InlineCompletionsUnificationState {
42
codeUnification: boolean;
43
modelUnification: boolean;
44
extensionUnification: boolean;
45
expAssignments: string[];
46
}
47
48