Group editor.increase/decreaseIndentPattern settings under editor.indent

Since these settings are paired, we don’t want to retrieve settings
from two different scopes for a given usage. This also emits a
deprecation warning when the old settings are used.
Esse commit está contido em:
Nathan Sobo
2014-12-11 10:49:20 -07:00
commit c8b92526ec
5 arquivos alterados com 51 adições e 17 exclusões
@@ -1,5 +1,6 @@
'.source.omg': '.source.omg':
'editor': 'editor':
'increaseIndentPattern': '^a' 'increaseIndentPattern': '^a'
'decreaseIndentPattern': '^z'
'commentStart': '/*' 'commentStart': '/*'
'commentEnd': '*/' 'commentEnd': '*/'
+15 -3
Ver Arquivo
@@ -369,7 +369,7 @@ describe "PackageManager", ->
atom.packages.activatePackage("package-with-scoped-properties") atom.packages.activatePackage("package-with-scoped-properties")
runs -> runs ->
expect(atom.config.get ['.source.omg'], 'editor.increaseIndentPattern').toBe '^a' expect(atom.config.get ['.source.omg'], 'editor.indent.increasePattern').toBe '^a'
it "combines 'editor.commentStart' and 'editor.commentEnd' strings under the 'editor.comment' key path", -> it "combines 'editor.commentStart' and 'editor.commentEnd' strings under the 'editor.comment' key path", ->
if atom.packages.isPackageLoaded("package-with-scoped-properties") if atom.packages.isPackageLoaded("package-with-scoped-properties")
@@ -383,6 +383,18 @@ describe "PackageManager", ->
expect(atom.config.get ['.source.omg'], 'editor.comment.end').toBe '*/' expect(atom.config.get ['.source.omg'], 'editor.comment.end').toBe '*/'
expect(Grim.deprecate).toHaveBeenCalled() expect(Grim.deprecate).toHaveBeenCalled()
it "combines 'editor.increaseIndentPattern' and 'editor.decreaseIndentPattern' strings under the 'editor.indent' key path", ->
if atom.packages.isPackageLoaded("package-with-scoped-properties")
atom.packages.unloadPackage("package-with-scoped-properties")
waitsForPromise ->
atom.packages.activatePackage("package-with-scoped-properties")
runs ->
expect(atom.config.get ['.source.omg'], 'editor.indent.increasePattern').toBe '^a'
expect(atom.config.get ['.source.omg'], 'editor.indent.decreasePattern').toBe '^z'
expect(Grim.deprecate).toHaveBeenCalled()
describe "converted textmate packages", -> describe "converted textmate packages", ->
it "loads the package's grammars", -> it "loads the package's grammars", ->
expect(atom.grammars.selectGrammar("file.rb").name).toBe "Null Grammar" expect(atom.grammars.selectGrammar("file.rb").name).toBe "Null Grammar"
@@ -507,9 +519,9 @@ describe "PackageManager", ->
atom.packages.activatePackage("package-with-scoped-properties") atom.packages.activatePackage("package-with-scoped-properties")
runs -> runs ->
expect(atom.config.get ['.source.omg'], 'editor.increaseIndentPattern').toBe '^a' expect(atom.config.get ['.source.omg'], 'editor.indent.increasePattern').toBe '^a'
atom.packages.deactivatePackage("package-with-scoped-properties") atom.packages.deactivatePackage("package-with-scoped-properties")
expect(atom.config.get ['.source.omg'], 'editor.increaseIndentPattern').toBeUndefined() expect(atom.config.get ['.source.omg'], 'editor.indent.increasePattern').toBeUndefined()
describe "textmate packages", -> describe "textmate packages", ->
it "removes the package's grammars", -> it "removes the package's grammars", ->
+7 -4
Ver Arquivo
@@ -88,10 +88,13 @@ module.exports =
type: ['string', 'null'] type: ['string', 'null']
end: end:
type: ['string', 'null'] type: ['string', 'null']
increaseIndentPattern: indent:
type: ['string', 'null'] type: 'object'
decreaseIndentPattern: properties:
type: ['string', 'null'] increasePattern:
type: ['string', 'null']
decreasePattern:
type: ['string', 'null']
foldEndPattern: foldEndPattern:
type: ['string', 'null'] type: ['string', 'null']
+16 -10
Ver Arquivo
@@ -249,7 +249,14 @@ class LanguageMode
suggestedIndentForBufferRow: (bufferRow, options) -> suggestedIndentForBufferRow: (bufferRow, options) ->
currentIndentLevel = @editor.indentationForBufferRow(bufferRow) currentIndentLevel = @editor.indentationForBufferRow(bufferRow)
scopeDescriptor = @editor.scopeDescriptorForBufferPosition([bufferRow, 0]) scopeDescriptor = @editor.scopeDescriptorForBufferPosition([bufferRow, 0])
return currentIndentLevel unless increaseIndentRegex = @increaseIndentRegexForScopeDescriptor(scopeDescriptor)
indentPatterns = atom.config.get(scopeDescriptor, 'editor.indent')
if indentPatterns?.increasePattern?
increaseIndentRegex = new OnigRegExp(indentPatterns.increasePattern)
if indentPatterns?.decreasePattern?
decreaseIndentRegex = new OnigRegExp(indentPatterns.decreasePattern)
return currentIndentLevel unless increaseIndentRegex?
currentLine = @buffer.lineForRow(bufferRow) currentLine = @buffer.lineForRow(bufferRow)
if options?.skipBlankLines ? true if options?.skipBlankLines ? true
@@ -263,7 +270,7 @@ class LanguageMode
desiredIndentLevel = @editor.indentationForBufferRow(precedingRow) desiredIndentLevel = @editor.indentationForBufferRow(precedingRow)
desiredIndentLevel += 1 if increaseIndentRegex.testSync(precedingLine) and not @editor.isBufferRowCommented(precedingRow) desiredIndentLevel += 1 if increaseIndentRegex.testSync(precedingLine) and not @editor.isBufferRowCommented(precedingRow)
return desiredIndentLevel unless decreaseIndentRegex = @decreaseIndentRegexForScopeDescriptor(scopeDescriptor) return desiredIndentLevel unless decreaseIndentRegex?
desiredIndentLevel -= 1 if decreaseIndentRegex.testSync(currentLine) desiredIndentLevel -= 1 if decreaseIndentRegex.testSync(currentLine)
Math.max(desiredIndentLevel, 0) Math.max(desiredIndentLevel, 0)
@@ -299,8 +306,13 @@ class LanguageMode
# bufferRow - The row {Number} # bufferRow - The row {Number}
autoDecreaseIndentForBufferRow: (bufferRow) -> autoDecreaseIndentForBufferRow: (bufferRow) ->
scopeDescriptor = @editor.scopeDescriptorForBufferPosition([bufferRow, 0]) scopeDescriptor = @editor.scopeDescriptorForBufferPosition([bufferRow, 0])
increaseIndentRegex = @increaseIndentRegexForScopeDescriptor(scopeDescriptor)
decreaseIndentRegex = @decreaseIndentRegexForScopeDescriptor(scopeDescriptor) indentPatterns = atom.config.get(scopeDescriptor, 'editor.indent')
if indentPatterns?.increasePattern?
increaseIndentRegex = new OnigRegExp(indentPatterns.increasePattern)
if indentPatterns?.decreasePattern?
decreaseIndentRegex = new OnigRegExp(indentPatterns.decreasePattern)
return unless increaseIndentRegex and decreaseIndentRegex return unless increaseIndentRegex and decreaseIndentRegex
line = @buffer.lineForRow(bufferRow) line = @buffer.lineForRow(bufferRow)
@@ -321,11 +333,5 @@ class LanguageMode
if pattern = atom.config.get(scopeDescriptor, property) if pattern = atom.config.get(scopeDescriptor, property)
new OnigRegExp(pattern) new OnigRegExp(pattern)
increaseIndentRegexForScopeDescriptor: (scopeDescriptor) ->
@getRegexForProperty(scopeDescriptor, 'editor.increaseIndentPattern')
decreaseIndentRegexForScopeDescriptor: (scopeDescriptor) ->
@getRegexForProperty(scopeDescriptor, 'editor.decreaseIndentPattern')
foldEndRegexForScopeDescriptor: (scopeDescriptor) -> foldEndRegexForScopeDescriptor: (scopeDescriptor) ->
@getRegexForProperty(scopeDescriptor, 'editor.foldEndPattern') @getRegexForProperty(scopeDescriptor, 'editor.foldEndPattern')
+12
Ver Arquivo
@@ -25,6 +25,18 @@ class ScopedProperties
delete properties.editor.commentEnd delete properties.editor.commentEnd
Grim.deprecate("The 'editor.commentEnd' setting has been moved to 'editor.comment.end'. Please update `#{@path}`.") Grim.deprecate("The 'editor.commentEnd' setting has been moved to 'editor.comment.end'. Please update `#{@path}`.")
if properties.editor?.increaseIndentPattern?
properties.editor.indent ?= {}
properties.editor.indent.increasePattern ?= properties.editor.increaseIndentPattern
delete properties.editor.increaseIndentPattern
Grim.deprecate("The 'editor.increaseIndentPattern' setting has been moved to 'editor.indent.increasePattern'. Please update `#{@path}`.")
if properties.editor?.decreaseIndentPattern?
properties.editor.indent ?= {}
properties.editor.indent.decreasePattern ?= properties.editor.decreaseIndentPattern
delete properties.editor.decreaseIndentPattern
Grim.deprecate("The 'editor.decreaseIndentPattern' setting has been moved to 'editor.indent.decreasePattern'. Please update `#{@path}`.")
@propertyDisposable = new CompositeDisposable @propertyDisposable = new CompositeDisposable
activate: -> activate: ->