mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
Scope editor.tabLength
This commit is contained in:
@@ -3038,6 +3038,25 @@ describe "TextEditor", ->
|
||||
atom.workspace.open(null, softTabs: false).then (editor) ->
|
||||
expect(editor.getSoftTabs()).toBeFalsy()
|
||||
|
||||
describe '.getTabLength(scopeDescriptor)', ->
|
||||
describe 'when scoped settings are used', ->
|
||||
coffeeEditor = null
|
||||
beforeEach ->
|
||||
waitsForPromise ->
|
||||
atom.packages.activatePackage('language-coffee-script')
|
||||
waitsForPromise ->
|
||||
atom.project.open('coffee.coffee', autoIndent: false).then (o) -> coffeeEditor = o
|
||||
|
||||
it 'will return correct values based on the scope of the set grammars', ->
|
||||
atom.config.set '.source.coffee', 'editor.tabLength', 6
|
||||
atom.config.set '.source.coffee .class', 'editor.tabLength', 4
|
||||
|
||||
expect(editor.getTabLength()).toBe 2
|
||||
expect(coffeeEditor.getTabLength()).toBe 6
|
||||
|
||||
coffeeEditor.setCursorBufferPosition [0, 10]
|
||||
expect(coffeeEditor.getTabLength(coffeeEditor.scopesAtCursor())).toBe 4
|
||||
|
||||
describe ".indentLevelForLine(line)", ->
|
||||
it "returns the indent level when the line has only leading whitespace", ->
|
||||
expect(editor.indentLevelForLine(" hello")).toBe(2)
|
||||
|
||||
@@ -396,8 +396,8 @@ class DisplayBuffer extends Model
|
||||
# Retrieves the current tab length.
|
||||
#
|
||||
# Returns a {Number}.
|
||||
getTabLength: ->
|
||||
@tokenizedBuffer.getTabLength()
|
||||
getTabLength: (scopeDescriptor) ->
|
||||
@tokenizedBuffer.getTabLength(scopeDescriptor)
|
||||
|
||||
# Specifies the tab length.
|
||||
#
|
||||
|
||||
@@ -2173,12 +2173,16 @@ class TextEditor extends Model
|
||||
|
||||
# Essential: Get the on-screen length of tab characters.
|
||||
#
|
||||
# Returns a {Number}.
|
||||
getTabLength: -> @displayBuffer.getTabLength()
|
||||
|
||||
# Essential: Set the on-screen length of tab characters.
|
||||
# * `scopeDescriptor` (optional) {Array} of {String}s.
|
||||
#
|
||||
# * `tabLength` {Number} length of a single tab
|
||||
# Returns a {Number}.
|
||||
getTabLength: (scopeDescriptor) -> @displayBuffer.getTabLength(scopeDescriptor)
|
||||
|
||||
# Essential: Set the on-screen length of tab characters. Setting this to a
|
||||
# {Number} This will override the `editor.tabLength` setting.
|
||||
#
|
||||
# * `tabLength` {Number} length of a single tab. Setting to `null` will
|
||||
# fallback to using the `editor.tabLength` config setting
|
||||
setTabLength: (tabLength) -> @displayBuffer.setTabLength(tabLength)
|
||||
|
||||
# Extended: Determine if the buffer uses hard or soft tabs.
|
||||
|
||||
@@ -25,16 +25,14 @@ class TokenizedBuffer extends Model
|
||||
constructor: ({@buffer, @tabLength, @invisibles}) ->
|
||||
@emitter = new Emitter
|
||||
|
||||
@tabLength ?= atom.config.get('editor.tabLength')
|
||||
|
||||
@subscribe atom.syntax.onDidAddGrammar(@grammarAddedOrUpdated)
|
||||
@subscribe atom.syntax.onDidUpdateGrammar(@grammarAddedOrUpdated)
|
||||
|
||||
@subscribe @buffer.onDidChange (e) => @handleBufferChange(e)
|
||||
@subscribe @buffer.onDidChangePath (@bufferPath) => @reloadGrammar()
|
||||
|
||||
# TODO: FIXME: make this work for scoped properties
|
||||
@subscribe @$tabLength.changes, (tabLength) => @retokenizeLines()
|
||||
|
||||
@subscribe atom.config.onDidChange 'editor.tabLength', ({newValue}) => @setTabLength(newValue)
|
||||
|
||||
@reloadGrammar()
|
||||
@@ -81,6 +79,7 @@ class TokenizedBuffer extends Model
|
||||
return if grammar is @grammar
|
||||
@unsubscribe(@grammar) if @grammar
|
||||
@grammar = grammar
|
||||
@grammarScopeDescriptor = [@grammar.scopeName]
|
||||
@currentGrammarScore = score ? grammar.getScore(@buffer.getPath(), @buffer.getText())
|
||||
@subscribe @grammar.onDidUpdate => @retokenizeLines()
|
||||
@retokenizeLines()
|
||||
@@ -112,15 +111,9 @@ class TokenizedBuffer extends Model
|
||||
setVisible: (@visible) ->
|
||||
@tokenizeInBackground() if @visible
|
||||
|
||||
# Retrieves the current tab length.
|
||||
#
|
||||
# Returns a {Number}.
|
||||
getTabLength: ->
|
||||
@tabLength
|
||||
getTabLength: (scopeDescriptor) ->
|
||||
@tabLength ? atom.config.get(scopeDescriptor ? @grammarScopeDescriptor, 'editor.tabLength')
|
||||
|
||||
# Specifies the tab length.
|
||||
#
|
||||
# tabLength - A {Number} that defines the new tab length.
|
||||
setTabLength: (@tabLength) ->
|
||||
|
||||
setInvisibles: (invisibles) ->
|
||||
|
||||
Reference in New Issue
Block a user