#46851 pass extension description as source
This commit is contained in:
parent
39c6132b2c
commit
49fc9c109e
|
@ -9,6 +9,7 @@ import { Emitter, Event } from 'vs/base/common/event';
|
||||||
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
import { IJSONSchema } from 'vs/base/common/jsonSchema';
|
||||||
import * as types from 'vs/base/common/types';
|
import * as types from 'vs/base/common/types';
|
||||||
import * as nls from 'vs/nls';
|
import * as nls from 'vs/nls';
|
||||||
|
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
|
||||||
import { Extensions as JSONExtensions, IJSONContributionRegistry } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
|
import { Extensions as JSONExtensions, IJSONContributionRegistry } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
|
||||||
import { Registry } from 'vs/platform/registry/common/platform';
|
import { Registry } from 'vs/platform/registry/common/platform';
|
||||||
|
|
||||||
|
@ -177,7 +178,7 @@ export interface IConfigurationPropertySchema extends IJSONSchema {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IConfigurationExtensionInfo {
|
export interface IConfigurationExtensionInfo {
|
||||||
id: string;
|
extensionDescription: IExtensionDescription;
|
||||||
restrictedConfigurations?: string[];
|
restrictedConfigurations?: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,16 +196,16 @@ export interface IConfigurationNode {
|
||||||
|
|
||||||
export interface IConfigurationDefaults {
|
export interface IConfigurationDefaults {
|
||||||
overrides: IStringDictionary<any>;
|
overrides: IStringDictionary<any>;
|
||||||
extensionId?: string;
|
source?: IExtensionDescription | string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type IRegisteredConfigurationPropertySchema = IConfigurationPropertySchema & {
|
export type IRegisteredConfigurationPropertySchema = IConfigurationPropertySchema & {
|
||||||
defaultDefaultValue?: any,
|
defaultDefaultValue?: any,
|
||||||
source?: string,
|
source?: IExtensionDescription,
|
||||||
defaultSource?: string
|
defaultSource?: IExtensionDescription | string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type IConfigurationDefaultOverride = { value: any, source?: string };
|
export type IConfigurationDefaultOverride = { value: any, source?: IExtensionDescription | string };
|
||||||
|
|
||||||
export const allSettings: { properties: IStringDictionary<IConfigurationPropertySchema>, patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };
|
export const allSettings: { properties: IStringDictionary<IConfigurationPropertySchema>, patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };
|
||||||
export const applicationSettings: { properties: IStringDictionary<IConfigurationPropertySchema>, patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };
|
export const applicationSettings: { properties: IStringDictionary<IConfigurationPropertySchema>, patternProperties: IStringDictionary<IConfigurationPropertySchema> } = { properties: {}, patternProperties: {} };
|
||||||
|
@ -283,26 +284,26 @@ class ConfigurationRegistry implements IConfigurationRegistry {
|
||||||
const properties: string[] = [];
|
const properties: string[] = [];
|
||||||
const overrideIdentifiers: string[] = [];
|
const overrideIdentifiers: string[] = [];
|
||||||
|
|
||||||
for (const { overrides, extensionId } of configurationDefaults) {
|
for (const { overrides, source } of configurationDefaults) {
|
||||||
for (const key in overrides) {
|
for (const key in overrides) {
|
||||||
properties.push(key);
|
properties.push(key);
|
||||||
|
|
||||||
if (OVERRIDE_PROPERTY_REGEX.test(key)) {
|
if (OVERRIDE_PROPERTY_REGEX.test(key)) {
|
||||||
const defaultValue = { ...(this.configurationDefaultsOverrides.get(key)?.value || {}), ...overrides[key] };
|
const defaultValue = { ...(this.configurationDefaultsOverrides.get(key)?.value || {}), ...overrides[key] };
|
||||||
this.configurationDefaultsOverrides.set(key, { source: extensionId, value: defaultValue });
|
this.configurationDefaultsOverrides.set(key, { source, value: defaultValue });
|
||||||
const property: IRegisteredConfigurationPropertySchema = {
|
const property: IRegisteredConfigurationPropertySchema = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
default: defaultValue,
|
default: defaultValue,
|
||||||
description: nls.localize('defaultLanguageConfiguration.description', "Configure settings to be overridden for {0} language.", key),
|
description: nls.localize('defaultLanguageConfiguration.description', "Configure settings to be overridden for {0} language.", key),
|
||||||
$ref: resourceLanguageSettingsSchemaId,
|
$ref: resourceLanguageSettingsSchemaId,
|
||||||
defaultDefaultValue: defaultValue,
|
defaultDefaultValue: defaultValue,
|
||||||
source: extensionId,
|
source: types.isString(source) ? undefined : source,
|
||||||
};
|
};
|
||||||
overrideIdentifiers.push(...overrideIdentifiersFromKey(key));
|
overrideIdentifiers.push(...overrideIdentifiersFromKey(key));
|
||||||
this.configurationProperties[key] = property;
|
this.configurationProperties[key] = property;
|
||||||
this.defaultLanguageConfigurationOverridesNode.properties![key] = property;
|
this.defaultLanguageConfigurationOverridesNode.properties![key] = property;
|
||||||
} else {
|
} else {
|
||||||
this.configurationDefaultsOverrides.set(key, { value: overrides[key], source: extensionId });
|
this.configurationDefaultsOverrides.set(key, { value: overrides[key], source });
|
||||||
const property = this.configurationProperties[key];
|
const property = this.configurationProperties[key];
|
||||||
if (property) {
|
if (property) {
|
||||||
this.updatePropertyDefaultValue(key, property);
|
this.updatePropertyDefaultValue(key, property);
|
||||||
|
@ -319,9 +320,12 @@ class ConfigurationRegistry implements IConfigurationRegistry {
|
||||||
|
|
||||||
public deregisterDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[]): void {
|
public deregisterDefaultConfigurations(defaultConfigurations: IConfigurationDefaults[]): void {
|
||||||
const properties: string[] = [];
|
const properties: string[] = [];
|
||||||
for (const { overrides, extensionId } of defaultConfigurations) {
|
for (const { overrides, source } of defaultConfigurations) {
|
||||||
for (const key in overrides) {
|
for (const key in overrides) {
|
||||||
if (this.configurationDefaultsOverrides.get(key)?.source !== extensionId) {
|
const configurationDefaultsOverride = this.configurationDefaultsOverrides.get(key);
|
||||||
|
const id = types.isString(source) ? source : source?.identifier.value;
|
||||||
|
const configurationDefaultsOverrideSourceId = types.isString(configurationDefaultsOverride?.source) ? configurationDefaultsOverride?.source : configurationDefaultsOverride?.source?.identifier.value;
|
||||||
|
if (id !== configurationDefaultsOverrideSourceId) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
properties.push(key);
|
properties.push(key);
|
||||||
|
@ -401,7 +405,7 @@ class ConfigurationRegistry implements IConfigurationRegistry {
|
||||||
}
|
}
|
||||||
|
|
||||||
const property: IRegisteredConfigurationPropertySchema = properties[key];
|
const property: IRegisteredConfigurationPropertySchema = properties[key];
|
||||||
property.source = extensionInfo?.id;
|
property.source = extensionInfo?.extensionDescription;
|
||||||
|
|
||||||
// update default value
|
// update default value
|
||||||
property.defaultDefaultValue = properties[key].default;
|
property.defaultDefaultValue = properties[key].default;
|
||||||
|
|
|
@ -144,7 +144,7 @@ const defaultConfigurationExtPoint = ExtensionsRegistry.registerExtensionPoint<I
|
||||||
});
|
});
|
||||||
defaultConfigurationExtPoint.setHandler((extensions, { added, removed }) => {
|
defaultConfigurationExtPoint.setHandler((extensions, { added, removed }) => {
|
||||||
if (removed.length) {
|
if (removed.length) {
|
||||||
const removedDefaultConfigurations = removed.map<IConfigurationDefaults>(extension => ({ overrides: objects.deepClone(extension.value), extensionId: extension.description.identifier.value }));
|
const removedDefaultConfigurations = removed.map<IConfigurationDefaults>(extension => ({ overrides: objects.deepClone(extension.value), source: extension.description }));
|
||||||
configurationRegistry.deregisterDefaultConfigurations(removedDefaultConfigurations);
|
configurationRegistry.deregisterDefaultConfigurations(removedDefaultConfigurations);
|
||||||
}
|
}
|
||||||
if (added.length) {
|
if (added.length) {
|
||||||
|
@ -161,7 +161,7 @@ defaultConfigurationExtPoint.setHandler((extensions, { added, removed }) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return { overrides, extensionId: extension.description.identifier.value };
|
return { overrides, source: extension.description };
|
||||||
});
|
});
|
||||||
configurationRegistry.registerDefaultConfigurations(addedDefaultConfigurations);
|
configurationRegistry.registerDefaultConfigurations(addedDefaultConfigurations);
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ configurationExtPoint.setHandler((extensions, { added, removed }) => {
|
||||||
validateProperties(configuration, extension);
|
validateProperties(configuration, extension);
|
||||||
|
|
||||||
configuration.id = node.id || extension.description.identifier.value;
|
configuration.id = node.id || extension.description.identifier.value;
|
||||||
configuration.extensionInfo = { id: extension.description.identifier.value, restrictedConfigurations: extension.description.capabilities?.untrustedWorkspaces?.supported === 'limited' ? extension.description.capabilities?.untrustedWorkspaces.restrictedConfigurations : undefined };
|
configuration.extensionInfo = { extensionDescription: extension.description, restrictedConfigurations: extension.description.capabilities?.untrustedWorkspaces?.supported === 'limited' ? extension.description.capabilities?.untrustedWorkspaces.restrictedConfigurations : undefined };
|
||||||
configuration.title = configuration.title || extension.description.displayName || extension.description.identifier.value;
|
configuration.title = configuration.title || extension.description.displayName || extension.description.identifier.value;
|
||||||
configurations.push(configuration);
|
configurations.push(configuration);
|
||||||
return configurations;
|
return configurations;
|
||||||
|
|
|
@ -314,7 +314,7 @@ export class SettingsTreeSettingElement extends SettingsTreeElement {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Array.from(extensionFilters).some(extensionId => extensionId.toLowerCase() === this.setting.extensionInfo!.id.toLowerCase());
|
return Array.from(extensionFilters).some(extensionId => extensionId.toLowerCase() === this.setting.extensionInfo!.extensionDescription.identifier.value.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
matchesAnyFeature(featureFilters?: Set<string>): boolean {
|
matchesAnyFeature(featureFilters?: Set<string>): boolean {
|
||||||
|
|
|
@ -38,6 +38,7 @@ import { forEach, IStringDictionary } from 'vs/base/common/collections';
|
||||||
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
|
||||||
import { IWorkbenchAssignmentService } from 'vs/workbench/services/assignment/common/assignmentService';
|
import { IWorkbenchAssignmentService } from 'vs/workbench/services/assignment/common/assignmentService';
|
||||||
import { isUndefined } from 'vs/base/common/types';
|
import { isUndefined } from 'vs/base/common/types';
|
||||||
|
import { localize } from 'vs/nls';
|
||||||
|
|
||||||
class Workspace extends BaseWorkspace {
|
class Workspace extends BaseWorkspace {
|
||||||
initialized: boolean = false;
|
initialized: boolean = false;
|
||||||
|
@ -1151,7 +1152,7 @@ class UpdateExperimentalSettingsDefaults extends Disposable implements IWorkbenc
|
||||||
} catch (error) {/*ignore */ }
|
} catch (error) {/*ignore */ }
|
||||||
}
|
}
|
||||||
if (Object.keys(overrides).length) {
|
if (Object.keys(overrides).length) {
|
||||||
this.configurationRegistry.registerDefaultConfigurations([{ overrides }]);
|
this.configurationRegistry.registerDefaultConfigurations([{ overrides, source: localize('experimental', "Experiments") }]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -565,7 +565,7 @@ export class DefaultSettings extends Disposable {
|
||||||
}
|
}
|
||||||
if (title) {
|
if (title) {
|
||||||
if (!settingsGroup) {
|
if (!settingsGroup) {
|
||||||
settingsGroup = result.find(g => g.title === title && g.extensionInfo?.id === config.extensionInfo?.id);
|
settingsGroup = result.find(g => g.title === title && g.extensionInfo?.extensionDescription.identifier.value === config.extensionInfo?.extensionDescription.identifier.value);
|
||||||
if (!settingsGroup) {
|
if (!settingsGroup) {
|
||||||
settingsGroup = { sections: [{ settings: [] }], id: config.id || '', title: title || '', titleRange: nullRange, order: config.order, range: nullRange, extensionInfo: config.extensionInfo };
|
settingsGroup = { sections: [{ settings: [] }], id: config.id || '', title: title || '', titleRange: nullRange, order: config.order, range: nullRange, extensionInfo: config.extensionInfo };
|
||||||
result.push(settingsGroup);
|
result.push(settingsGroup);
|
||||||
|
|
Loading…
Reference in a new issue