未验证 提交 9676646c 编写于 作者: R Rob Lourens 提交者: GitHub

Merge pull request #108120 from ryanclarke:106737-enumdescriptions-in-settings-ui

Add new property to IConfigurationPropertySchema
...@@ -113,6 +113,7 @@ export interface IConfigurationPropertySchema extends IJSONSchema { ...@@ -113,6 +113,7 @@ export interface IConfigurationPropertySchema extends IJSONSchema {
included?: boolean; included?: boolean;
tags?: string[]; tags?: string[];
disallowSyncIgnore?: boolean; disallowSyncIgnore?: boolean;
enumItemLabels?: string[];
} }
export interface IConfigurationExtensionInfo { export interface IConfigurationExtensionInfo {
......
...@@ -248,7 +248,8 @@ configurationRegistry.registerConfiguration({ ...@@ -248,7 +248,8 @@ configurationRegistry.registerConfiguration({
'default': 'utf8', 'default': 'utf8',
'description': nls.localize('encoding', "The default character set encoding to use when reading and writing files. This setting can also be configured per language."), 'description': nls.localize('encoding', "The default character set encoding to use when reading and writing files. This setting can also be configured per language."),
'scope': ConfigurationScope.LANGUAGE_OVERRIDABLE, 'scope': ConfigurationScope.LANGUAGE_OVERRIDABLE,
'enumDescriptions': Object.keys(SUPPORTED_ENCODINGS).map(key => SUPPORTED_ENCODINGS[key].labelLong) 'enumDescriptions': Object.keys(SUPPORTED_ENCODINGS).map(key => SUPPORTED_ENCODINGS[key].labelLong),
'enumItemLabels': Object.keys(SUPPORTED_ENCODINGS).map(key => SUPPORTED_ENCODINGS[key].labelLong)
}, },
'files.autoGuessEncoding': { 'files.autoGuessEncoding': {
'type': 'boolean', 'type': 'boolean',
......
...@@ -1318,6 +1318,7 @@ export class SettingEnumRenderer extends AbstractSettingRenderer implements ITre ...@@ -1318,6 +1318,7 @@ export class SettingEnumRenderer extends AbstractSettingRenderer implements ITre
} }
protected renderValue(dataElement: SettingsTreeSettingElement, template: ISettingEnumItemTemplate, onChange: (value: string) => void): void { protected renderValue(dataElement: SettingsTreeSettingElement, template: ISettingEnumItemTemplate, onChange: (value: string) => void): void {
const enumItemLabels = dataElement.setting.enumItemLabels;
const enumDescriptions = dataElement.setting.enumDescriptions; const enumDescriptions = dataElement.setting.enumDescriptions;
const enumDescriptionsAreMarkdown = dataElement.setting.enumDescriptionsAreMarkdown; const enumDescriptionsAreMarkdown = dataElement.setting.enumDescriptionsAreMarkdown;
...@@ -1327,9 +1328,11 @@ export class SettingEnumRenderer extends AbstractSettingRenderer implements ITre ...@@ -1327,9 +1328,11 @@ export class SettingEnumRenderer extends AbstractSettingRenderer implements ITre
const displayOptions = dataElement.setting.enum! const displayOptions = dataElement.setting.enum!
.map(String) .map(String)
.map(escapeInvisibleChars) .map(escapeInvisibleChars)
.map((data, index) => <ISelectOptionItem>{ .map((data, index) => {
text: data, const description = (enumDescriptions && enumDescriptions[index] && (enumDescriptionsAreMarkdown ? fixSettingLinks(enumDescriptions[index], false) : enumDescriptions[index]));
description: (enumDescriptions && enumDescriptions[index] && (enumDescriptionsAreMarkdown ? fixSettingLinks(enumDescriptions[index], false) : enumDescriptions[index])), return <ISelectOptionItem>{
text: enumItemLabels && enumItemLabels[index] ? enumItemLabels[index] : data,
description: enumItemLabels && enumItemLabels[index] ? `[${data}] ${description}` : description,
descriptionIsMarkdown: enumDescriptionsAreMarkdown, descriptionIsMarkdown: enumDescriptionsAreMarkdown,
descriptionMarkdownActionHandler: { descriptionMarkdownActionHandler: {
callback: (content) => { callback: (content) => {
...@@ -1338,6 +1341,7 @@ export class SettingEnumRenderer extends AbstractSettingRenderer implements ITre ...@@ -1338,6 +1341,7 @@ export class SettingEnumRenderer extends AbstractSettingRenderer implements ITre
disposeables: disposables disposeables: disposables
}, },
decoratorRight: (data === dataElement.defaultValue ? localize('settings.Default', "default") : '') decoratorRight: (data === dataElement.defaultValue ? localize('settings.Default', "default") : '')
};
}); });
template.selectBox.setOptions(displayOptions); template.selectBox.setOptions(displayOptions);
......
...@@ -76,6 +76,7 @@ export interface ISetting { ...@@ -76,6 +76,7 @@ export interface ISetting {
disallowSyncIgnore?: boolean; disallowSyncIgnore?: boolean;
extensionInfo?: IConfigurationExtensionInfo; extensionInfo?: IConfigurationExtensionInfo;
validator?: (value: any) => string | null; validator?: (value: any) => string | null;
enumItemLabels?: string[];
} }
export interface IExtensionSetting extends ISetting { export interface IExtensionSetting extends ISetting {
......
...@@ -646,7 +646,8 @@ export class DefaultSettings extends Disposable { ...@@ -646,7 +646,8 @@ export class DefaultSettings extends Disposable {
extensionInfo: extensionInfo, extensionInfo: extensionInfo,
deprecationMessage: prop.markdownDeprecationMessage || prop.deprecationMessage, deprecationMessage: prop.markdownDeprecationMessage || prop.deprecationMessage,
deprecationMessageIsMarkdown: !!prop.markdownDeprecationMessage, deprecationMessageIsMarkdown: !!prop.markdownDeprecationMessage,
validator: createValidator(prop) validator: createValidator(prop),
enumItemLabels: prop.enumItemLabels
}); });
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册