Move config handling out of LanguageMode

This commit is contained in:
Max Brunsfeld
2016-07-12 14:19:35 -07:00
parent 6fe4ce56c7
commit 5adb087ab1
5 changed files with 58 additions and 23 deletions

View File

@@ -107,7 +107,7 @@ describe "LanguageMode", ->
expect(languageMode.suggestedIndentForBufferRow(11)).toBe 1
it "does not take invisibles into account", ->
atom.config.set('editor.showInvisibles', true)
editor.setShowInvisibles(true)
expect(languageMode.suggestedIndentForBufferRow(0)).toBe 0
expect(languageMode.suggestedIndentForBufferRow(1)).toBe 1
expect(languageMode.suggestedIndentForBufferRow(2)).toBe 2

View File

@@ -646,12 +646,7 @@ class Cursor extends Model
###
getNonWordCharacters: ->
(
@editor
.scopedSettingsDelegate
?.getNonWordCharacters?(@getScopeDescriptor().getScopesArray()) ?
@editor.getNonWordCharacters()
)
@editor.getNonWordCharacters(@getScopeDescriptor().getScopesArray())
changePosition: (options, fn) ->
@clearSelection(autoscroll: false)

View File

@@ -8,7 +8,7 @@ class LanguageMode
# Sets up a `LanguageMode` for the given {TextEditor}.
#
# editor - The {TextEditor} to associate with
constructor: (@editor, @config) ->
constructor: (@editor) ->
{@buffer} = @editor
@regexesByPattern = {}
@@ -252,6 +252,7 @@ class LanguageMode
iterator.next()
scopeDescriptor = new ScopeDescriptor(scopes: iterator.getScopes())
patterns =
increaseIndentRegex = @increaseIndentRegexForScopeDescriptor(scopeDescriptor)
decreaseIndentRegex = @decreaseIndentRegexForScopeDescriptor(scopeDescriptor)
decreaseNextIndentRegex = @decreaseNextIndentRegexForScopeDescriptor(scopeDescriptor)
@@ -331,27 +332,21 @@ class LanguageMode
if desiredIndentLevel >= 0 and desiredIndentLevel < currentIndentLevel
@editor.setIndentationForBufferRow(bufferRow, desiredIndentLevel)
getRegexForProperty: (scopeDescriptor, property) ->
if pattern = @config.get(property, scope: scopeDescriptor)
cacheRegex: (pattern) ->
if pattern
@regexesByPattern[pattern] ?= new OnigRegExp(pattern)
@regexesByPattern[pattern]
increaseIndentRegexForScopeDescriptor: (scopeDescriptor) ->
@getRegexForProperty(scopeDescriptor, 'editor.increaseIndentPattern')
@cacheRegex(@editor.getIncreaseIndentPattern(scopeDescriptor))
decreaseIndentRegexForScopeDescriptor: (scopeDescriptor) ->
@getRegexForProperty(scopeDescriptor, 'editor.decreaseIndentPattern')
@cacheRegex(@editor.getDecreaseIndentPattern(scopeDescriptor))
decreaseNextIndentRegexForScopeDescriptor: (scopeDescriptor) ->
@getRegexForProperty(scopeDescriptor, 'editor.decreaseNextIndentPattern')
@cacheRegex(@editor.getDecreaseNextIndentPattern(scopeDescriptor))
foldEndRegexForScopeDescriptor: (scopeDescriptor) ->
@getRegexForProperty(scopeDescriptor, 'editor.foldEndPattern')
@cacheRegex(@editor.getFoldEndPattern(scopeDescriptor))
commentStartAndEndStringsForScope: (scope) ->
commentStartEntry = @config.getAll('editor.commentStart', {scope})[0]
commentEndEntry = _.find @config.getAll('editor.commentEnd', {scope}), (entry) ->
entry.scopeSelector is commentStartEntry.scopeSelector
commentStartString = commentStartEntry?.value
commentEndString = commentEndEntry?.value
{commentStartString, commentEndString}
@editor.getCommentStrings(scope)

View File

@@ -177,4 +177,33 @@ class ScopedSettingsDelegate {
getNonWordCharacters(scope) {
return this.config.get('editor.nonWordCharacters', {scope: scope})
}
getIncreaseIndentPattern (scope) {
return this.config.get('editor.increaseIndentPattern', {scope: scope})
}
getDecreaseIndentPattern (scope) {
return this.config.get('editor.decreaseIndentPattern', {scope: scope})
}
getDecreaseNextIndentPattern (scope) {
return this.config.get('editor.decreaseNextIndentPattern', {scope: scope})
}
getFoldEndPattern (scope) {
return this.config.get('editor.foldEndPattern', {scope: scope})
}
getCommentStrings (scope) {
const commentStartEntries = this.config.getAll('editor.commentStart', {scope})
const commentEndEntries = this.config.getAll('editor.commentEnd', {scope})
const commentStartEntry = commentStartEntries[0]
const commentEndEntry = commentEndEntries.find(entry => {
return entry.scopeSelector === commentStartEntry.scopeSelector
})
return {
commentStartString: commentStartEntry && commentStartEntry.value,
commentEndString: commentEndEntry && commentEndEntry.value,
}
}
}

View File

@@ -181,7 +181,7 @@ class TextEditor extends Model
initialColumn = Math.max(parseInt(initialColumn) or 0, 0)
@addCursorAtBufferPosition([initialLine, initialColumn])
@languageMode = new LanguageMode(this, @config)
@languageMode = new LanguageMode(this)
@gutterContainer = new GutterContainer(this)
@lineNumberGutter = @gutterContainer.addGutter
@@ -3351,7 +3351,23 @@ class TextEditor extends Model
setNonWordCharacters: (@nonWordCharacters) ->
getNonWordCharacters: -> @nonWordCharacters
getNonWordCharacters: (scopes) ->
(scopes and @scopedSettingsDelegate?.getNonWordCharacters?(scopes)) ? @nonWordCharacters
getCommentStrings: (scopes) ->
(scopes and @scopedSettingsDelegate?.getCommentStrings?(scopes)) ? @commentStrings
getIncreaseIndentPattern: (scopes) ->
(scopes and @scopedSettingsDelegate?.getIncreaseIndentPattern?(scopes)) ? @increaseIndentPattern
getDecreaseIndentPattern: (scopes) ->
(scopes and @scopedSettingsDelegate?.getDecreaseIndentPattern?(scopes)) ? @decreaseIndentPattern
getDecreaseNextIndentPattern: (scopes) ->
(scopes and @scopedSettingsDelegate?.getDecreaseNextIndentPattern?(scopes)) ? @decreaseNextIndentPattern
getFoldEndPattern: (scopes) ->
(scopes and @scopedSettingsDelegate?.getFoldEndPattern?(scopes)) ? @foldEndPattern
###
Section: Event Handlers