diff --git a/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts b/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts index ad081f0b797..8e51995e8aa 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsTreeModels.ts @@ -405,10 +405,10 @@ export function settingKeyToDisplayFormat(key: string, groupId = ''): { category function wordifyKey(key: string): string { return key - .replace(/\.([a-z])/g, (match, p1) => ` › ${p1.toUpperCase()}`) - .replace(/([a-z])([A-Z])/g, '$1 $2') // fooBar => foo Bar - .replace(/^[a-z]/g, match => match.toUpperCase()) // foo => Foo - .replace(/\b\w+\b/g, match => { + .replace(/\.([a-z0-9])/g, (match, 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 return knownAcronyms.has(match.toLowerCase()) ? match.toUpperCase() : match; 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 2b7c77431c9..35b36215171 100644 --- a/src/vs/workbench/contrib/preferences/test/browser/settingsTreeModels.test.ts +++ b/src/vs/workbench/contrib/preferences/test/browser/settingsTreeModels.test.ts @@ -101,6 +101,20 @@ suite('SettingsTree', () => { category: 'Something Else', label: 'Etc' }); + + assert.deepEqual( + settingKeyToDisplayFormat('foo.1leading.number'), + { + category: 'Foo › 1leading', + label: 'Number' + }); + + assert.deepEqual( + settingKeyToDisplayFormat('foo.1Leading.number'), + { + category: 'Foo › 1 Leading', + label: 'Number' + }); }); test('parseQuery', () => {