From 4e6ee69aff75ddbab759691adceb96ac34ab3cf6 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 24 Jul 2017 19:35:10 +0530 Subject: [PATCH] Implement #29831 --- src/vs/editor/common/config/commonEditorConfig.ts | 2 +- .../configuration/common/configurationRegistry.ts | 6 +++--- .../parts/files/browser/files.contribution.ts | 12 ++++++------ .../parts/search/browser/search.contribution.ts | 2 +- .../configuration/common/configurationModels.ts | 8 ++++---- .../services/configuration/node/configuration.ts | 11 +++++++++-- .../test/common/configurationModels.test.ts | 10 +++++----- 7 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/vs/editor/common/config/commonEditorConfig.ts b/src/vs/editor/common/config/commonEditorConfig.ts index 65a75a62ebe..c0666b78a98 100644 --- a/src/vs/editor/common/config/commonEditorConfig.ts +++ b/src/vs/editor/common/config/commonEditorConfig.ts @@ -173,7 +173,7 @@ const editorConfiguration: IConfigurationNode = { 'type': 'object', 'title': nls.localize('editorConfigurationTitle', "Editor"), 'overridable': true, - 'scope': ConfigurationScope.FOLDER, + 'scope': ConfigurationScope.RESOURCE, 'properties': { 'editor.fontFamily': { 'type': 'string', diff --git a/src/vs/platform/configuration/common/configurationRegistry.ts b/src/vs/platform/configuration/common/configurationRegistry.ts index 356f78076ae..e3a6e8d5778 100644 --- a/src/vs/platform/configuration/common/configurationRegistry.ts +++ b/src/vs/platform/configuration/common/configurationRegistry.ts @@ -53,8 +53,8 @@ export interface IConfigurationRegistry { } export enum ConfigurationScope { - WORKSPACE = 1, - FOLDER + WORKBENCH = 1, + RESOURCE } export interface IConfigurationPropertySchema extends IJSONSchema { @@ -154,7 +154,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { } } - private validateAndRegisterProperties(configuration: IConfigurationNode, validate: boolean = true, scope: ConfigurationScope = ConfigurationScope.WORKSPACE, overridable: boolean = false) { + private validateAndRegisterProperties(configuration: IConfigurationNode, validate: boolean = true, scope: ConfigurationScope = ConfigurationScope.WORKBENCH, overridable: boolean = false) { scope = configuration.scope !== void 0 && configuration.scope !== null ? configuration.scope : scope; overridable = configuration.overridable || overridable; let properties = configuration.properties; diff --git a/src/vs/workbench/parts/files/browser/files.contribution.ts b/src/vs/workbench/parts/files/browser/files.contribution.ts index 9f1388cfa35..3f9cf071693 100644 --- a/src/vs/workbench/parts/files/browser/files.contribution.ts +++ b/src/vs/workbench/parts/files/browser/files.contribution.ts @@ -174,7 +174,7 @@ configurationRegistry.registerConfiguration({ 'type': 'object', 'description': nls.localize('exclude', "Configure glob patterns for excluding files and folders."), 'default': { '**/.git': true, '**/.svn': true, '**/.hg': true, '**/CVS': true, '**/.DS_Store': true }, - 'scope': ConfigurationScope.FOLDER, + 'scope': ConfigurationScope.RESOURCE, 'additionalProperties': { 'anyOf': [ { @@ -204,13 +204,13 @@ configurationRegistry.registerConfiguration({ 'enum': Object.keys(SUPPORTED_ENCODINGS), 'default': 'utf8', 'description': nls.localize('encoding', "The default character set encoding to use when reading and writing files."), - 'scope': ConfigurationScope.FOLDER + 'scope': ConfigurationScope.RESOURCE }, 'files.autoGuessEncoding': { 'type': 'boolean', 'default': false, 'description': nls.localize('autoGuessEncoding', "When enabled, will attempt to guess the character set encoding when opening files"), - 'scope': ConfigurationScope.FOLDER + 'scope': ConfigurationScope.RESOURCE }, 'files.eol': { 'type': 'string', @@ -226,14 +226,14 @@ configurationRegistry.registerConfiguration({ 'default': false, 'description': nls.localize('trimTrailingWhitespace', "When enabled, will trim trailing whitespace when saving a file."), 'overridable': true, - 'scope': ConfigurationScope.FOLDER + 'scope': ConfigurationScope.RESOURCE }, 'files.insertFinalNewline': { 'type': 'boolean', 'default': false, 'description': nls.localize('insertFinalNewline', "When enabled, insert a final new line at the end of the file when saving it."), 'overridable': true, - 'scope': ConfigurationScope.FOLDER + 'scope': ConfigurationScope.RESOURCE }, 'files.autoSave': { 'type': 'string', @@ -256,7 +256,7 @@ configurationRegistry.registerConfiguration({ 'type': 'object', 'default': platform.isWindows /* https://github.com/Microsoft/vscode/issues/23954 */ ? { '**/.git/objects/**': true, '**/.git/subtree-cache/**': true, '**/node_modules/*/**': true } : { '**/.git/objects/**': true, '**/.git/subtree-cache/**': true, '**/node_modules/**': true }, 'description': nls.localize('watcherExclude', "Configure glob patterns of file paths to exclude from file watching. Patterns must match on absolute paths (i.e. prefix with ** or the full path to match properly). Changing this setting requires a restart. When you experience Code consuming lots of cpu time on startup, you can exclude large folders to reduce the initial load."), - 'scope': ConfigurationScope.FOLDER + 'scope': ConfigurationScope.RESOURCE }, 'files.hotExit': { 'type': 'string', diff --git a/src/vs/workbench/parts/search/browser/search.contribution.ts b/src/vs/workbench/parts/search/browser/search.contribution.ts index 948143d11b0..adaa1d8591d 100644 --- a/src/vs/workbench/parts/search/browser/search.contribution.ts +++ b/src/vs/workbench/parts/search/browser/search.contribution.ts @@ -363,7 +363,7 @@ configurationRegistry.registerConfiguration({ } ] }, - 'scope': ConfigurationScope.FOLDER + 'scope': ConfigurationScope.RESOURCE }, 'search.useRipgrep': { 'type': 'boolean', diff --git a/src/vs/workbench/services/configuration/common/configurationModels.ts b/src/vs/workbench/services/configuration/common/configurationModels.ts index ab1d0a40140..8acb1f796cb 100644 --- a/src/vs/workbench/services/configuration/common/configurationModels.ts +++ b/src/vs/workbench/services/configuration/common/configurationModels.ts @@ -129,11 +129,11 @@ export class FolderSettingsModel extends CustomConfigurationModel { } public createWorkspaceConfigurationModel(): ConfigurationModel { - return this.createScopedConfigurationModel(ConfigurationScope.WORKSPACE); + return this.createScopedConfigurationModel(ConfigurationScope.WORKBENCH); } public createFolderScopedConfigurationModel(): ConfigurationModel { - return this.createScopedConfigurationModel(ConfigurationScope.FOLDER); + return this.createScopedConfigurationModel(ConfigurationScope.RESOURCE); } private createScopedConfigurationModel(scope: ConfigurationScope): ConfigurationModel { @@ -151,7 +151,7 @@ export class FolderSettingsModel extends CustomConfigurationModel { private getScope(key: string, configurationProperties: { [qualifiedKey: string]: IConfigurationPropertySchema }): ConfigurationScope { const propertySchema = configurationProperties[key]; - return propertySchema ? propertySchema.scope : ConfigurationScope.WORKSPACE; + return propertySchema ? propertySchema.scope : ConfigurationScope.WORKBENCH; } } @@ -166,7 +166,7 @@ export class FolderConfigurationModel extends CustomConfigurationModel { this._contents = {}; this._overrides = []; - this.doMerge(this, ConfigurationScope.WORKSPACE === this.scope ? this.workspaceSettingsConfig : this.workspaceSettingsConfig.createFolderScopedConfigurationModel()); + this.doMerge(this, ConfigurationScope.WORKBENCH === this.scope ? this.workspaceSettingsConfig : this.workspaceSettingsConfig.createFolderScopedConfigurationModel()); for (const configModel of this.scopedConfigs) { this.doMerge(this, configModel); } diff --git a/src/vs/workbench/services/configuration/node/configuration.ts b/src/vs/workbench/services/configuration/node/configuration.ts index 29f2d247f14..4c506d62a25 100644 --- a/src/vs/workbench/services/configuration/node/configuration.ts +++ b/src/vs/workbench/services/configuration/node/configuration.ts @@ -76,6 +76,11 @@ const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint(new FolderSettingsModel(null), [], ConfigurationScope.FOLDER), false); + this.cachedFolderConfigs.set(folder, this._register(new FolderConfiguration(folder, this.workspaceSettingsRootFolder, this.hasMultiFolderWorkspace() ? ConfigurationScope.RESOURCE : ConfigurationScope.WORKBENCH))); + this.updateFolderConfiguration(folder, new FolderConfigurationModel(new FolderSettingsModel(null), [], ConfigurationScope.RESOURCE), false); } } diff --git a/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts b/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts index ed5902bacb1..321bc7efc06 100644 --- a/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts +++ b/src/vs/workbench/services/configuration/test/common/configurationModels.test.ts @@ -15,7 +15,7 @@ suite('ConfigurationService - Model', () => { awesome: true })); - const testObject = new FolderConfigurationModel(settingsConfig, [], ConfigurationScope.WORKSPACE); + const testObject = new FolderConfigurationModel(settingsConfig, [], ConfigurationScope.WORKBENCH); assert.equal(testObject.getContentsFor('task'), undefined); }); @@ -36,7 +36,7 @@ suite('ConfigurationService - Model', () => { } }; - assert.deepEqual(new FolderConfigurationModel(settingsConfig, [tasksConfig], ConfigurationScope.WORKSPACE).contents, expected); + assert.deepEqual(new FolderConfigurationModel(settingsConfig, [tasksConfig], ConfigurationScope.WORKBENCH).contents, expected); }); test('Test consolidate (settings and launch)', () => { @@ -55,7 +55,7 @@ suite('ConfigurationService - Model', () => { } }; - assert.deepEqual(new FolderConfigurationModel(settingsConfig, [launchConfig], ConfigurationScope.WORKSPACE).contents, expected); + assert.deepEqual(new FolderConfigurationModel(settingsConfig, [launchConfig], ConfigurationScope.WORKBENCH).contents, expected); }); test('Test consolidate (settings and launch and tasks) - launch/tasks wins over settings file', () => { @@ -91,7 +91,7 @@ suite('ConfigurationService - Model', () => { } }; - assert.deepEqual(new FolderConfigurationModel(settingsConfig, [launchConfig, tasksConfig], ConfigurationScope.WORKSPACE).contents, expected); - assert.deepEqual(new FolderConfigurationModel(settingsConfig, [tasksConfig, launchConfig], ConfigurationScope.WORKSPACE).contents, expected); + assert.deepEqual(new FolderConfigurationModel(settingsConfig, [launchConfig, tasksConfig], ConfigurationScope.WORKBENCH).contents, expected); + assert.deepEqual(new FolderConfigurationModel(settingsConfig, [tasksConfig, launchConfig], ConfigurationScope.WORKBENCH).contents, expected); }); }); \ No newline at end of file -- GitLab