提交 0147a1bf 编写于 作者: R Rob Lourens

Settings editor - show enumDescriptions inline when there are more than 10.

This specifically targets the files.encoding setting.
See #53911
上级 a0f07e30
......@@ -483,6 +483,7 @@ export class SettingsRenderer implements IRenderer {
private static readonly SETTING_ROW_HEIGHT = 98;
private static readonly SETTING_BOOL_ROW_HEIGHT = 65;
public static readonly MAX_ENUM_DESCRIPTIONS = 10;
private readonly _onDidChangeSetting: Emitter<ISettingChangeEvent> = new Emitter<ISettingChangeEvent>();
public readonly onDidChangeSetting: Event<ISettingChangeEvent> = this._onDidChangeSetting.event;
......@@ -846,7 +847,7 @@ export class SettingsRenderer implements IRenderer {
template.labelElement.textContent = element.displayLabel;
template.labelElement.title = titleTooltip;
const enumDescriptionText = element.setting.enumDescriptions ?
const enumDescriptionText = element.setting.enumDescriptions && element.setting.enum && element.setting.enum.length < SettingsRenderer.MAX_ENUM_DESCRIPTIONS ?
'\n' + element.setting.enumDescriptions
.map((desc, i) => ` - \`${element.setting.enum[i]}\`: ${desc}`)
.join('\n') :
......@@ -911,7 +912,7 @@ export class SettingsRenderer implements IRenderer {
}
private renderEnum(dataElement: SettingsTreeSettingElement, isSelected: boolean, template: ISettingEnumItemTemplate, onChange: (value: string) => void): void {
const displayOptions = dataElement.setting.enum.map(escapeInvisibleChars);
const displayOptions = getDisplayEnumOptions(dataElement.setting);
template.selectBox.setOptions(displayOptions);
const label = dataElement.displayCategory + ' ' + dataElement.displayLabel;
......@@ -955,6 +956,20 @@ export class SettingsRenderer implements IRenderer {
}
}
function getDisplayEnumOptions(setting: ISetting): string[] {
if (setting.enum.length > SettingsRenderer.MAX_ENUM_DESCRIPTIONS && setting.enumDescriptions) {
return setting.enum
.map(escapeInvisibleChars)
.map((value, i) => {
return setting.enumDescriptions[i] ?
`${value}: ${setting.enumDescriptions[i]}` :
value;
});
}
return setting.enum.map(escapeInvisibleChars);
}
function escapeInvisibleChars(enumValue: string): string {
return enumValue && enumValue
.replace(/\n/g, '\\n')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册