diff --git a/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts b/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts index 3a0f28506c68e39555fb805505af5b7a7fd3bc2a..b6437fbb2e1f3853113f87582a17b3f497545e14 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsLayout.ts @@ -196,7 +196,7 @@ export const tocData: ITOCEntry = { ] }; -export const knownAcronyms = new Set(); +export const knownAcronyms = new Set(); [ 'css', 'html', @@ -209,3 +209,7 @@ export const knownAcronyms = new Set(); 'id', 'php', ].forEach(str => knownAcronyms.add(str)); + +export const knownTermMappings = new Map(); +knownTermMappings.set('power shell', 'PowerShell'); +knownTermMappings.set('powershell', 'PowerShell'); diff --git a/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts b/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts index 8e51995e8aa1fbe01be0536fae0aa844ceee18b0..8a297af7ba0a3f4bc377063819758aa4e9ee6bc0 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts @@ -11,7 +11,7 @@ import { localize } from 'vs/nls'; import { ConfigurationTarget, IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; import { SettingsTarget } from 'vs/workbench/contrib/preferences/browser/preferencesWidgets'; -import { ITOCEntry, knownAcronyms } from 'vs/workbench/contrib/preferences/browser/settingsLayout'; +import { ITOCEntry, knownAcronyms, knownTermMappings } from 'vs/workbench/contrib/preferences/browser/settingsLayout'; import { MODIFIED_SETTING_TAG } from 'vs/workbench/contrib/preferences/common/preferences'; import { IExtensionSetting, ISearchResult, ISetting, SettingValueType } from 'vs/workbench/services/preferences/common/preferences'; @@ -404,8 +404,8 @@ export function settingKeyToDisplayFormat(key: string, groupId = ''): { category } function wordifyKey(key: string): string { - return key - .replace(/\.([a-z0-9])/g, (match, p1) => ` › ${p1.toUpperCase()}`) // Replace dot with spaced '>' + key = key + .replace(/\.([a-z0-9])/g, (_, p1) => ` › ${p1.toUpperCase()}`) // Replace dot with spaced '>' .replace(/([a-z0-9])([A-Z])/g, '$1 $2') // Camel case to spacing, fooBar => foo Bar .replace(/^[a-z]/g, match => match.toUpperCase()) // Upper casing all first letters, foo => Foo .replace(/\b\w+\b/g, match => { // Upper casing known acronyms @@ -413,6 +413,12 @@ function wordifyKey(key: string): string { match.toUpperCase() : match; }); + + for (let [k, v] of knownTermMappings) { + key = key.replace(new RegExp(`\\b${k}\\b`, 'gi'), v); + } + + return key; } function trimCategoryForGroup(category: string, groupId: string): string { diff --git a/src/vs/workbench/contrib/preferences/test/browser/settingsTreeModels.test.ts b/src/vs/workbench/contrib/preferences/test/browser/settingsTreeModels.test.ts index 35b3621517110f62dcf57b2a2476d91d39ad4c81..8113f3d377b2c00cf86af6a98882c43488d8988f 100644 --- a/src/vs/workbench/contrib/preferences/test/browser/settingsTreeModels.test.ts +++ b/src/vs/workbench/contrib/preferences/test/browser/settingsTreeModels.test.ts @@ -35,6 +35,20 @@ suite('SettingsTree', () => { category: '', label: 'Foo' }); + + assert.deepEqual( + settingKeyToDisplayFormat('foo.1leading.number'), + { + category: 'Foo › 1leading', + label: 'Number' + }); + + assert.deepEqual( + settingKeyToDisplayFormat('foo.1Leading.number'), + { + category: 'Foo › 1 Leading', + label: 'Number' + }); }); test('settingKeyToDisplayFormat - with category', () => { @@ -101,19 +115,21 @@ suite('SettingsTree', () => { category: 'Something Else', label: 'Etc' }); + }); + test('settingKeyToDisplayFormat - known acronym/term', () => { assert.deepEqual( - settingKeyToDisplayFormat('foo.1leading.number'), + settingKeyToDisplayFormat('css.someCssSetting'), { - category: 'Foo › 1leading', - label: 'Number' + category: 'CSS', + label: 'Some CSS Setting' }); assert.deepEqual( - settingKeyToDisplayFormat('foo.1Leading.number'), + settingKeyToDisplayFormat('powershell.somePowerShellSetting'), { - category: 'Foo › 1 Leading', - label: 'Number' + category: 'PowerShell', + label: 'Some PowerShell Setting' }); });