From 137df72a603be40ed56f885c781b25f2c848bd35 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Thu, 23 Oct 2014 17:10:45 -0700 Subject: [PATCH 1/3] Give the user settings a priority Base index 1000 --- src/config.coffee | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/config.coffee b/src/config.coffee index 163116f71..b30925cac 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -314,6 +314,7 @@ class Config @settings = {} @scopedSettingsStore = new ScopedPropertyStore @usersScopedSettings = new CompositeDisposable + @usersScopedSettingPriority = {indexBase: 1000} @configFileHasErrors = false @configFilePath = fs.resolve(@configDirPath, 'config', ['json', 'cson']) @configFilePath ?= path.join(@configDirPath, 'config.cson') @@ -537,7 +538,7 @@ class Config settings = @scopedSettingsStore.propertiesForSourceAndSelector('user-config', scopeSelector) @scopedSettingsStore.removePropertiesForSourceAndSelector('user-config', scopeSelector) _.setValueForKeyPath(settings, keyPath, undefined) - @addScopedSettings('user-config', scopeSelector, settings) + @addScopedSettings('user-config', scopeSelector, settings, @usersScopedSettingPriority) @save() unless @configFileHasErrors @getDefault(scopeSelector, keyPath) else @@ -881,13 +882,13 @@ class Config resetUserScopedSettings: (newScopedSettings) -> @usersScopedSettings?.dispose() @usersScopedSettings = new CompositeDisposable - @usersScopedSettings.add @scopedSettingsStore.addProperties('user-config', newScopedSettings) + @usersScopedSettings.add @scopedSettingsStore.addProperties('user-config', newScopedSettings, @usersScopedSettingPriority) @emitter.emit 'did-change' - addScopedSettings: (source, selector, value) -> + addScopedSettings: (source, selector, value, options) -> settingsBySelector = {} settingsBySelector[selector] = value - disposable = @scopedSettingsStore.addProperties(source, settingsBySelector) + disposable = @scopedSettingsStore.addProperties(source, settingsBySelector, options) @emitter.emit 'did-change' new Disposable => disposable.dispose() @@ -901,7 +902,7 @@ class Config settingsBySelector = {} settingsBySelector[selector] = value - @usersScopedSettings.add @scopedSettingsStore.addProperties('user-config', settingsBySelector) + @usersScopedSettings.add @scopedSettingsStore.addProperties('user-config', settingsBySelector, @usersScopedSettingPriority) @emitter.emit 'did-change' getRawScopedValue: (scopeDescriptor, keyPath) -> From d0d6af7e55009c59b917347ade9d69093da8006d Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Fri, 24 Oct 2014 11:35:52 -0700 Subject: [PATCH 2/3] Specs for priority --- spec/config-spec.coffee | 7 +++++++ src/config.coffee | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/spec/config-spec.coffee b/spec/config-spec.coffee index cdd071091..e46585d6e 100644 --- a/spec/config-spec.coffee +++ b/spec/config-spec.coffee @@ -1075,6 +1075,13 @@ describe "Config", -> atom.config.setDefaults("foo", hasDefault: 'ok') expect(atom.config.get([".source.coffee", ".string.quoted.single"], "foo.hasDefault")).toBe 'ok' + describe 'setting priority', -> + describe 'when package settings are added after user settings', -> + it "returns the user's setting because the user's setting has higher priority", -> + atom.config.set(".source.coffee", "foo.bar.baz", 100) + atom.config.addScopedSettings("some-package", ".source.coffee", foo: bar: baz: 1) + expect(atom.config.get([".source.coffee"], "foo.bar.baz")).toBe 100 + describe ".set(scope, keyPath, value)", -> it "sets the value and overrides the others", -> atom.config.addScopedSettings("config", ".source.coffee .string.quoted.double.coffee", foo: bar: baz: 42) diff --git a/src/config.coffee b/src/config.coffee index b30925cac..0983fa966 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -314,7 +314,7 @@ class Config @settings = {} @scopedSettingsStore = new ScopedPropertyStore @usersScopedSettings = new CompositeDisposable - @usersScopedSettingPriority = {indexBase: 1000} + @usersScopedSettingPriority = {priority: 1000} @configFileHasErrors = false @configFilePath = fs.resolve(@configDirPath, 'config', ['json', 'cson']) @configFilePath ?= path.join(@configDirPath, 'config.cson') From ae2a7769ed169a2b8120ab8964451bb731d8e522 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Fri, 24 Oct 2014 11:36:12 -0700 Subject: [PATCH 3/3] Upgrade scoped-property-store for priority option --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 194dcb847..915d1b33f 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "reactionary-atom-fork": "^1.0.0", "runas": "1.0.1", "scandal": "1.0.3", - "scoped-property-store": "^0.14.0", + "scoped-property-store": "^0.15.0", "scrollbar-style": "^1.0.2", "season": "^1.0.2", "semver": "2.2.1",