Skip to content

Commit cdfc2ab

Browse files
authored
Allow to specify params in context.${languageID} exp setting (#1768)
1 parent 2fe36df commit cdfc2ab

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

src/extension/completions-core/vscode-node/lib/src/experiments/features.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export type ContextProviderExpSettings = {
2727
includeNeighboringFiles: boolean;
2828
excludeRelatedFiles: boolean;
2929
timeBudget: number;
30+
params?: Record<string, string | boolean | number>;
3031
}
3132

3233
type InternalContextProviderExpSettings = {
@@ -35,7 +36,8 @@ type InternalContextProviderExpSettings = {
3536
includeNeighboringFiles?: boolean;
3637
excludeRelatedFiles?: boolean;
3738
timeBudget?: number;
38-
}
39+
params?: Record<string, string | boolean | number>;
40+
};
3941

4042
/** General-purpose API for accessing ExP variable values. */
4143
export class Features {
@@ -260,9 +262,6 @@ export class Features {
260262
try {
261263
const parsed: Partial<InternalContextProviderExpSettings> = JSON.parse(value);
262264
const ids = this.getProviderIDs(parsed);
263-
if (ids.length === 0) {
264-
return undefined;
265-
}
266265
delete parsed.id;
267266
delete parsed.ids;
268267
return Object.assign({ ids }, { includeNeighboringFiles: false, excludeRelatedFiles: false, timeBudget: 150 }, parsed as Omit<InternalContextProviderExpSettings, 'id' | 'ids'>);

src/extension/completions-core/vscode-node/lib/src/prompt/contextProviderRegistryCSharp.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,16 @@ export function fillInCSharpActiveExperiments(
2121
): boolean {
2222
const ctx = accessor.get(ICompletionsContextService);
2323
try {
24-
const csharpContextProviderParams = ctx.get(Features).csharpContextProviderParams(telemetryData);
24+
const features = ctx.get(Features);
25+
const csharpContextProviderParams = features.csharpContextProviderParams(telemetryData);
2526
if (csharpContextProviderParams) {
2627
const params = JSON.parse(csharpContextProviderParams) as ContextProviderParams;
2728
for (const [key, value] of Object.entries(params)) { activeExperiments.set(key, value); }
29+
} else {
30+
const params = features.getContextProviderExpSettings('csharp')?.params;
31+
if (params) {
32+
for (const [key, value] of Object.entries(params)) { activeExperiments.set(key, value); }
33+
}
2834
}
2935
} catch (e) {
3036
logger.debug(ctx.get(LogTarget), `Failed to get the active C# experiments for the Context Provider API`, e);

src/extension/completions-core/vscode-node/lib/src/prompt/contextProviderRegistryCpp.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,21 @@ export function fillInCppVSCodeActiveExperiments(
4141
function addActiveExperiments(accessor: ServicesAccessor, activeExperiments: ActiveExperiments, telemetryData: TelemetryWithExp) {
4242
try {
4343
const ctx = accessor.get(ICompletionsContextService);
44+
const features = ctx.get(Features);
4445
const logTarget = ctx.get(LogTarget);
4546
let params = cppContextProviderParamsDefault;
46-
const cppContextProviderParams = ctx.get(Features).cppContextProviderParams(telemetryData);
47+
const cppContextProviderParams = features.cppContextProviderParams(telemetryData);
4748
if (cppContextProviderParams) {
4849
try {
4950
params = JSON.parse(cppContextProviderParams) as CppContextProviderParams;
5051
} catch (e) {
5152
logger.error(logTarget, 'Failed to parse cppContextProviderParams', e);
5253
}
54+
} else {
55+
const params = features.getContextProviderExpSettings('cpp')?.params;
56+
if (params) {
57+
for (const [key, value] of Object.entries(params)) { activeExperiments.set(key, value); }
58+
}
5359
}
5460
for (const [key, value] of Object.entries(params)) { activeExperiments.set(key, value); }
5561
} catch (e) {

src/extension/completions-core/vscode-node/lib/src/prompt/contextProviderRegistryTs.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,20 @@ export function fillInTsActiveExperiments(
3232
}
3333
const ctx = accessor.get(ICompletionsContextService);
3434
try {
35-
const tsContextProviderParams = ctx.get(Features).tsContextProviderParams(telemetryData);
35+
const features = ctx.get(Features);
36+
const tsContextProviderParams = features.tsContextProviderParams(telemetryData);
3637
if (tsContextProviderParams) {
3738
const params = JSON.parse(tsContextProviderParams) as ContextProviderParams;
3839
for (const [key, value] of Object.entries(params)) { activeExperiments.set(key, value); }
40+
} else {
41+
const params = features.getContextProviderExpSettings('typescript')?.params;
42+
if (params) {
43+
for (const [key, value] of Object.entries(params)) { activeExperiments.set(key, value); }
44+
}
3945
}
4046
} catch (e) {
4147
logger.debug(ctx.get(LogTarget), `Failed to get the active TypeScript experiments for the Context Provider API`, e);
4248
return false;
4349
}
4450
return true;
45-
}
51+
}

0 commit comments

Comments
 (0)