diff --git a/spec/config-spec.coffee b/spec/config-spec.coffee index 324db9d8a..01a2eca51 100644 --- a/spec/config-spec.coffee +++ b/spec/config-spec.coffee @@ -97,7 +97,7 @@ describe "Config", -> atom.config.addScopedSettings("default", ".source.coffee", foo: bar: baz: 42) expect(atom.config.getDefault('.source.coffee', 'foo.bar.baz')).toBe 42 - atom.config.set('.source.coffee', 'foo.bar.baz', 55) + atom.config.set('foo.bar.baz', 55, scopeSelector: '.source.coffee') expect(atom.config.getDefault('.source.coffee', 'foo.bar.baz')).toBe 42 describe ".isDefault(keyPath)", -> @@ -118,7 +118,7 @@ describe "Config", -> atom.config.addScopedSettings("default", ".source.coffee", foo: bar: baz: 42) expect(atom.config.isDefault('.source.coffee', 'foo.bar.baz')).toBe true - atom.config.set('.source.coffee', 'foo.bar.baz', 55) + atom.config.set('foo.bar.baz', 55, scopeSelector: '.source.coffee') expect(atom.config.isDefault('.source.coffee', 'foo.bar.baz')).toBe false describe ".setDefaults(keyPath)", -> @@ -174,7 +174,7 @@ describe "Config", -> describe "when scoped settings are used", -> it "restores the global default when no scoped default set", -> atom.config.setDefaults("foo", bar: baz: 10) - atom.config.set('.source.coffee', 'foo.bar.baz', 55) + atom.config.set('foo.bar.baz', 55, scopeSelector: '.source.coffee') expect(atom.config.get(['.source.coffee'], 'foo.bar.baz')).toBe 55 atom.config.restoreDefault('.source.coffee', 'foo.bar.baz') @@ -183,8 +183,8 @@ describe "Config", -> it "restores the scoped default when a scoped default is set", -> atom.config.setDefaults("foo", bar: baz: 10) atom.config.addScopedSettings("default", ".source.coffee", foo: bar: baz: 42) - atom.config.set('.source.coffee', 'foo.bar.baz', 55) - atom.config.set('.source.coffee', 'foo.bar.ok', 100) + atom.config.set('foo.bar.baz', 55, scopeSelector: '.source.coffee') + atom.config.set('foo.bar.ok', 100, scopeSelector: '.source.coffee') expect(atom.config.get(['.source.coffee'], 'foo.bar.baz')).toBe 55 atom.config.restoreDefault('.source.coffee', 'foo.bar.baz') @@ -194,7 +194,7 @@ describe "Config", -> it "calls ::save()", -> atom.config.setDefaults("foo", bar: baz: 10) atom.config.addScopedSettings("default", ".source.coffee", foo: bar: baz: 42) - atom.config.set('.source.coffee', 'foo.bar.baz', 55) + atom.config.set('foo.bar.baz', 55, scopeSelector: '.source.coffee') atom.config.save.reset() atom.config.restoreDefault('.source.coffee', 'foo.bar.baz') @@ -216,8 +216,8 @@ describe "Config", -> jasmine.unspy atom.config, 'save' atom.config.setDefaults("foo", bar: baz: 10) - atom.config.set('.source.coffee', 'foo.bar.baz', 55) - atom.config.set('.source.coffee', 'foo.bar.zfoo', 20) + atom.config.set('foo.bar.baz', 55, scopeSelector: '.source.coffee') + atom.config.set('foo.bar.zfoo', 20, scopeSelector: '.source.coffee') CSON.writeFileSync.reset() expect(atom.config.get(['.source.coffee'], 'foo.bar.baz')).toBe 55 @@ -239,7 +239,7 @@ describe "Config", -> it "does not call ::save when the value is already at the default", -> atom.config.setDefaults("foo", bar: baz: 10) - atom.config.set('.source.coffee', 'foo.bar.baz', 55) + atom.config.set('foo.bar.baz', 55) atom.config.save.reset() atom.config.restoreDefault('.source.coffee', 'foo.bar.ok') @@ -353,9 +353,9 @@ describe "Config", -> describe "when scoped settings are defined", -> it 'writes out explicitly set config settings', -> - atom.config.set('.source.ruby', 'foo.bar', 'ruby') - atom.config.set('.source.ruby', 'foo.omg', 'wow') - atom.config.set('.source.coffee', 'foo.bar', 'coffee') + atom.config.set('foo.bar', 'ruby', scopeSelector: '.source.ruby') + atom.config.set('foo.omg', 'wow', scopeSelector: '.source.ruby') + atom.config.set('foo.bar', 'coffee', scopeSelector: '.source.coffee') CSON.writeFileSync.reset() atom.config.save() @@ -1125,7 +1125,7 @@ describe "Config", -> 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.set("foo.bar.baz", 100, scopeSelector: ".source.coffee") atom.config.addScopedSettings("some-package", ".source.coffee", foo: bar: baz: 1) expect(atom.config.get([".source.coffee"], "foo.bar.baz")).toBe 100 @@ -1137,7 +1137,7 @@ describe "Config", -> expect(atom.config.get([".source.coffee", ".string.quoted.double.coffee"], "foo.bar.baz")).toBe 42 - expect(atom.config.set(".source.coffee .string.quoted.double.coffee", "foo.bar.baz", 100)).toBe true + expect(atom.config.set("foo.bar.baz", 100, scopeSelector: ".source.coffee .string.quoted.double.coffee")).toBe true expect(atom.config.get([".source.coffee", ".string.quoted.double.coffee"], "foo.bar.baz")).toBe 100 describe ".removeScopedSettingsForName(name)", -> diff --git a/spec/text-editor-component-spec.coffee b/spec/text-editor-component-spec.coffee index 7e0810ceb..31a11b54d 100644 --- a/spec/text-editor-component-spec.coffee +++ b/spec/text-editor-component-spec.coffee @@ -2577,9 +2577,9 @@ describe "TextEditorComponent", -> describe 'soft wrap settings', -> beforeEach -> - atom.config.set '.source.coffee', 'editor.softWrap', true - atom.config.set '.source.coffee', 'editor.preferredLineLength', 17 - atom.config.set '.source.coffee', 'editor.softWrapAtPreferredLineLength', true + atom.config.set 'editor.softWrap', true, scopeSelector: '.source.coffee' + atom.config.set 'editor.preferredLineLength', 17, scopeSelector: '.source.coffee' + atom.config.set 'editor.softWrapAtPreferredLineLength', true, scopeSelector: '.source.coffee' editor.setEditorWidthInChars(20) coffeeEditor.setEditorWidthInChars(20) @@ -2589,18 +2589,18 @@ describe "TextEditorComponent", -> expect(coffeeEditor.lineTextForScreenRow(3)).toEqual ' return items ' it 'updates the wrapped lines when editor.preferredLineLength changes', -> - atom.config.set '.source.coffee', 'editor.preferredLineLength', 20 + atom.config.set 'editor.preferredLineLength', 20, scopeSelector: '.source.coffee' expect(coffeeEditor.lineTextForScreenRow(2)).toEqual ' return items if ' it 'updates the wrapped lines when editor.softWrapAtPreferredLineLength changes', -> - atom.config.set '.source.coffee', 'editor.softWrapAtPreferredLineLength', false + atom.config.set 'editor.softWrapAtPreferredLineLength', false, scopeSelector: '.source.coffee' expect(coffeeEditor.lineTextForScreenRow(2)).toEqual ' return items if ' it 'updates the wrapped lines when editor.softWrap changes', -> - atom.config.set '.source.coffee', 'editor.softWrap', false + atom.config.set 'editor.softWrap', false, scopeSelector: '.source.coffee' expect(coffeeEditor.lineTextForScreenRow(2)).toEqual ' return items if items.length <= 1' - atom.config.set '.source.coffee', 'editor.softWrap', true + atom.config.set 'editor.softWrap', true, scopeSelector: '.source.coffee' expect(coffeeEditor.lineTextForScreenRow(3)).toEqual ' return items ' it 'updates the wrapped lines when the grammar changes', -> @@ -2628,11 +2628,11 @@ describe "TextEditorComponent", -> tab: 'F' cr: 'E' - atom.config.set '.source.js', 'editor.showInvisibles', true - atom.config.set '.source.js', 'editor.invisibles', jsInvisibles + atom.config.set 'editor.showInvisibles', true, scopeSelector: '.source.js' + atom.config.set 'editor.invisibles', jsInvisibles, scopeSelector: '.source.js' - atom.config.set '.source.coffee', 'editor.showInvisibles', false - atom.config.set '.source.coffee', 'editor.invisibles', coffeeInvisibles + atom.config.set 'editor.showInvisibles', false, scopeSelector: '.source.coffee' + atom.config.set 'editor.invisibles', coffeeInvisibles, scopeSelector: '.source.coffee' editor.setText " a line with tabs\tand spaces \n" nextAnimationFrame() @@ -2648,7 +2648,7 @@ describe "TextEditorComponent", -> it "re-renders the invisibles when the invisible settings change", -> jsGrammar = editor.getGrammar() editor.setGrammar(coffeeEditor.getGrammar()) - atom.config.set '.source.coffee', 'editor.showInvisibles', true + atom.config.set 'editor.showInvisibles', true, scopeSelector: '.source.coffee' nextAnimationFrame() expect(component.lineNodeForScreenRow(0).textContent).toBe "#{coffeeInvisibles.space}a line with tabs#{coffeeInvisibles.tab}and spaces#{coffeeInvisibles.space}#{coffeeInvisibles.eol}" @@ -2657,7 +2657,7 @@ describe "TextEditorComponent", -> space: 'E' tab: 'W' cr: 'I' - atom.config.set '.source.coffee', 'editor.invisibles', newInvisibles + atom.config.set 'editor.invisibles', newInvisibles, scopeSelector: '.source.coffee' nextAnimationFrame() expect(component.lineNodeForScreenRow(0).textContent).toBe "#{newInvisibles.space}a line with tabs#{newInvisibles.tab}and spaces#{newInvisibles.space}#{newInvisibles.eol}" @@ -2667,8 +2667,8 @@ describe "TextEditorComponent", -> describe 'editor.showIndentGuide', -> beforeEach -> - atom.config.set '.source.js', 'editor.showIndentGuide', true - atom.config.set '.source.coffee', 'editor.showIndentGuide', false + atom.config.set 'editor.showIndentGuide', true, scopeSelector: '.source.js' + atom.config.set 'editor.showIndentGuide', false, scopeSelector: '.source.coffee' it "has an 'indent-guide' class when scoped editor.showIndentGuide is true, but not when scoped editor.showIndentGuide is false", -> line1LeafNodes = getLeafNodes(component.lineNodeForScreenRow(1)) @@ -2689,7 +2689,7 @@ describe "TextEditorComponent", -> expect(line1LeafNodes[0].classList.contains('indent-guide')).toBe true expect(line1LeafNodes[1].classList.contains('indent-guide')).toBe false - atom.config.set '.source.js', 'editor.showIndentGuide', false + atom.config.set 'editor.showIndentGuide', false, scopeSelector: '.source.js' line1LeafNodes = getLeafNodes(component.lineNodeForScreenRow(1)) expect(line1LeafNodes[0].textContent).toBe ' ' diff --git a/spec/text-editor-spec.coffee b/spec/text-editor-spec.coffee index b84b3b944..c70991f38 100644 --- a/spec/text-editor-spec.coffee +++ b/spec/text-editor-spec.coffee @@ -1327,7 +1327,7 @@ describe "TextEditor", -> coffeeEditor.selectWordsContainingCursors() expect(coffeeEditor.getSelectedBufferRange()).toEqual [[0, 6], [0, 15]] - atom.config.set '.source.coffee', 'editor.nonWordCharacters', 'qusort' + atom.config.set 'editor.nonWordCharacters', 'qusort', scopeSelector: '.source.coffee' coffeeEditor.setCursorBufferPosition [0, 9] coffeeEditor.selectWordsContainingCursors() @@ -3276,7 +3276,7 @@ describe "TextEditor", -> atom.packages.unloadPackages() it 'returns correct values based on the scope of the set grammars', -> - atom.config.set '.source.coffee', 'editor.tabLength', 6 + atom.config.set 'editor.tabLength', 6, scopeSelector: '.source.coffee' expect(editor.getTabLength()).toBe 2 expect(coffeeEditor.getTabLength()).toBe 6 @@ -3298,12 +3298,12 @@ describe "TextEditor", -> expect(editor.getTabLength()).toBe 2 expect(editor.tokenizedLineForScreenRow(5).tokens[0].firstNonWhitespaceIndex).toBe 2 - atom.config.set '.source.js', 'editor.tabLength', 6 + atom.config.set 'editor.tabLength', 6, scopeSelector: '.source.js' expect(editor.getTabLength()).toBe 6 expect(editor.tokenizedLineForScreenRow(5).tokens[0].firstNonWhitespaceIndex).toBe 6 it 'updates the tab length when the grammar changes', -> - atom.config.set '.source.coffee', 'editor.tabLength', 6 + atom.config.set 'editor.tabLength', 6, scopeSelector: '.source.coffee' expect(editor.getTabLength()).toBe 2 expect(editor.tokenizedLineForScreenRow(5).tokens[0].firstNonWhitespaceIndex).toBe 2 @@ -3473,8 +3473,8 @@ describe "TextEditor", -> atom.project.open('coffee.coffee', autoIndent: false).then (o) -> coffeeEditor = o runs -> - atom.config.set('.source.js', 'editor.autoIndent', true) - atom.config.set('.source.coffee', 'editor.autoIndent', false) + atom.config.set('editor.autoIndent', true, scopeSelector: '.source.js') + atom.config.set('editor.autoIndent', false, scopeSelector: '.source.coffee') afterEach: -> atom.packages.deactivatePackages() diff --git a/src/config.coffee b/src/config.coffee index dcad15b56..66f4f9433 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -504,13 +504,20 @@ class Config # Returns a {Boolean} # * `true` if the value was set. # * `false` if the value was not able to be coerced to the type specified in the setting's schema. - set: (scopeSelector, keyPath, value) -> - if arguments.length < 3 - value = keyPath - keyPath = scopeSelector - scopeSelector = undefined + set: -> + if arguments[0][0] is '.' + Grim.deprecate """ + Passing a scope selector as the first argument to Config::set is deprecated. + Pass a `scopeSelector` in an options hash as the final argument instead. + """ + scopeSelector = arguments[0] + keyPath = arguments[1] + value = arguments[2] + else + [keyPath, value, options] = arguments + scopeSelector = options?.scopeSelector - unless value == undefined + unless value is undefined try value = @makeValueConformToSchema(keyPath, value) catch e