Update .content.indentGuidesVisible when editor’s grammar changes

This commit is contained in:
Nathan Sobo 2015-01-21 09:38:54 -07:00
parent d0b52538b2
commit 590391a0ce
2 changed files with 20 additions and 3 deletions

View File

@ -87,6 +87,22 @@ describe "TextEditorPresenter", ->
atom.config.set('editor.showIndentGuide', false)
expect(presenter.state.content.indentGuidesVisible).toBe false
describe "when the editor's grammar changes", ->
it "updates .indentGuidesVisible based on the grammar's root scope", ->
atom.config.set('editor.showIndentGuide', true, scopeSelector: ".source.js")
presenter = new TextEditorPresenter(model: editor, clientHeight: 25, clientWidth: 50, scrollTop: 0, baseCharacterWidth: 10, lineHeight: 10, lineOverdrawMargin: 0)
expect(presenter.state.content.indentGuidesVisible).toBe false
waitsForPromise -> atom.packages.activatePackage('language-javascript')
runs ->
editor.setGrammar(atom.grammars.selectGrammar('.js'))
expect(presenter.state.content.indentGuidesVisible).toBe true
editor.setGrammar(atom.grammars.selectGrammar('.txt'))
expect(presenter.state.content.indentGuidesVisible).toBe false
describe "::state.content.lines", ->
describe "on initialization", ->
it "contains the lines that are visible on screen, plus the overdraw margin", ->

View File

@ -18,9 +18,10 @@ class TextEditorPresenter
@disposables.add @model.onDidChangeSoftWrapped =>
@updateContentState()
@updateLinesState()
@disposables.add @model.onDidChangeGrammar(@updateContentState.bind(this))
observeConfig: ->
@disposables.add atom.config.onDidChange 'editor.showIndentGuide', @updateContentState.bind(this)
@disposables.add atom.config.onDidChange 'editor.showIndentGuide', scope: @model.getRootScopeDescriptor(), @updateContentState.bind(this)
buildState: ->
@state = {}
@ -30,7 +31,7 @@ class TextEditorPresenter
buildContentState: ->
@state.content =
scrollWidth: @computeScrollWidth()
indentGuidesVisible: atom.config.get('editor.showIndentGuide')
indentGuidesVisible: atom.config.get('editor.showIndentGuide', scope: @model.getRootScopeDescriptor())
buildLinesState: ->
@state.content.lines = {}
@ -38,7 +39,7 @@ class TextEditorPresenter
updateContentState: ->
@state.content.scrollWidth = @computeScrollWidth()
@state.content.indentGuidesVisible = atom.config.get('editor.showIndentGuide')
@state.content.indentGuidesVisible = atom.config.get('editor.showIndentGuide', scope: @model.getRootScopeDescriptor())
updateLinesState: ->
visibleLineIds = {}