mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
Move config handling out of LanguageMode
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user