Skip to content

Commit

Permalink
Settings editors - fix \n enum value breaking json syntax
Browse files Browse the repository at this point in the history
  • Loading branch information
roblourens committed Jul 27, 2018
1 parent 0dea26f commit dae69db
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
9 changes: 6 additions & 3 deletions src/vs/workbench/parts/preferences/browser/settingsTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1010,9 +1010,12 @@ export class SettingsRenderer implements ITreeRenderer {
let enumDescriptionText = '';
if (element.valueType === 'enum' && element.setting.enumDescriptions && element.setting.enum && element.setting.enum.length < SettingsRenderer.MAX_ENUM_DESCRIPTIONS) {
enumDescriptionText = '\n' + element.setting.enumDescriptions
.map((desc, i) => desc ?
` - \`${element.setting.enum[i]}\`: ${desc}` :
` - \`${element.setting.enum[i]}\``)
.map((desc, i) => {
const displayEnum = escapeInvisibleChars(setting.enum[i]);
return desc ?
` - \`${displayEnum}\`: ${desc}` :
` - \`${setting.enum[i]}\``;
})
.filter(desc => !!desc)
.join('\n');
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -899,9 +899,10 @@ class SettingsContentBuilder {

if (setting.enumDescriptions && setting.enumDescriptions.some(desc => !!desc)) {
setting.enumDescriptions.forEach((desc, i) => {
const displayEnum = escapeInvisibleChars(setting.enum[i]);
const line = desc ?
`${setting.enum[i]}: ${fixSettingLink(desc)}` :
setting.enum[i];
`${displayEnum}: ${fixSettingLink(desc)}` :
displayEnum;

this._contentByLines.push(` // - ${line}`);

Expand Down Expand Up @@ -942,6 +943,12 @@ class SettingsContentBuilder {
}
}

function escapeInvisibleChars(enumValue: string): string {
return enumValue && enumValue
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r');
}

export function defaultKeybindingsContents(keybindingService: IKeybindingService): string {
const defaultsHeader = '// ' + nls.localize('defaultKeybindingsHeader', "Overwrite key bindings by placing them into your key bindings file.");
return defaultsHeader + '\n' + keybindingService.getDefaultKeybindingsContent();
Expand Down

0 comments on commit dae69db

Please sign in to comment.