Update the tab type when the setting changes

This commit is contained in:
Ben Ogle
2015-08-12 17:21:53 -07:00
parent 1544c117a2
commit 1192008479
2 changed files with 25 additions and 2 deletions

View File

@@ -3810,6 +3810,27 @@ describe "TextEditor", ->
runs ->
expect(editor.softTabs).toBe true
describe "when editor.tabType changes", ->
beforeEach ->
atom.config.set('editor.tabType', 'auto')
it "updates based on the value chosen", ->
waitsForPromise ->
atom.workspace.open('sample.js').then (editor) ->
expect(editor.getSoftTabs()).toBe true
atom.config.set('editor.tabType', 'hard')
expect(editor.getSoftTabs()).toBe false
atom.config.set('editor.tabType', 'auto')
expect(editor.getSoftTabs()).toBe true
waitsForPromise ->
atom.workspace.open('sample-with-tabs.coffee').then (editor) ->
expect(editor.getSoftTabs()).toBe false
atom.config.set('editor.tabType', 'soft')
expect(editor.getSoftTabs()).toBe true
atom.config.set('editor.tabType', 'auto')
expect(editor.getSoftTabs()).toBe false
describe '.getTabLength()', ->
describe 'when scoped settings are used', ->
coffeeEditor = null

View File

@@ -75,7 +75,7 @@ class TextEditor extends Model
'autoDecreaseIndentForBufferRow', 'toggleLineCommentForBufferRow', 'toggleLineCommentsForBufferRows',
toProperty: 'languageMode'
constructor: ({softTabs, initialLine, initialColumn, tabLength, softWrapped, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini, @placeholderText, lineNumberGutterVisible, largeFileMode}={}) ->
constructor: ({@softTabs, initialLine, initialColumn, tabLength, softWrapped, @displayBuffer, buffer, registerEditor, suppressCursorCreation, @mini, @placeholderText, lineNumberGutterVisible, largeFileMode}={}) ->
super
@emitter = new Emitter
@@ -86,7 +86,9 @@ class TextEditor extends Model
buffer ?= new TextBuffer
@displayBuffer ?= new DisplayBuffer({buffer, tabLength, softWrapped, ignoreInvisibles: @mini, largeFileMode})
@buffer = @displayBuffer.buffer
@softTabs = @shouldUseSoftTabs(defaultValue: softTabs)
@disposables.add atom.config.observe 'editor.tabType', scope: @getRootScopeDescriptor(), =>
@softTabs = @shouldUseSoftTabs(defaultValue: @softTabs)
for marker in @findMarkers(@getSelectionMarkerAttributes())
marker.setProperties(preserveFolds: true)