Don't use atom globals in TokenIterator

This commit is contained in:
Antonio Scandurra 2015-10-06 15:06:32 +02:00 committed by Nathan Sobo
parent 464cfd4474
commit 534f038631
6 changed files with 14 additions and 11 deletions

View File

@ -13,7 +13,7 @@ module.exports =
class LinesComponent extends TiledComponent
placeholderTextDiv: null
constructor: ({@presenter, @hostElement, @useShadowDOM, visible, @domElementPool, @assert}) ->
constructor: ({@presenter, @hostElement, @useShadowDOM, visible, @domElementPool, @assert, @grammars}) ->
@domNode = document.createElement('div')
@domNode.classList.add('lines')
@tilesNode = document.createElement("div")
@ -63,7 +63,7 @@ class LinesComponent extends TiledComponent
@oldState.indentGuidesVisible = @newState.indentGuidesVisible
buildComponentForTile: (id) -> new LinesTileComponent({id, @presenter, @domElementPool, @assert})
buildComponentForTile: (id) -> new LinesTileComponent({id, @presenter, @domElementPool, @assert, @grammars})
buildEmptyState: ->
{tiles: {}}

View File

@ -13,8 +13,8 @@ cloneObject = (object) ->
module.exports =
class LinesTileComponent
constructor: ({@presenter, @id, @domElementPool, @assert}) ->
@tokenIterator = new TokenIterator
constructor: ({@presenter, @id, @domElementPool, @assert, grammars}) ->
@tokenIterator = new TokenIterator(grammarRegistry: grammars)
@measuredLines = new Set
@lineNodesByLineId = {}
@screenRowsByLineId = {}

View File

@ -41,7 +41,7 @@ class TextEditorComponent
@assert domNode?, "TextEditorComponent::domNode was set to null."
@domNodeValue = domNode
constructor: ({@editor, @hostElement, @rootElement, @stylesElement, @useShadowDOM, tileSize, @views, @themes, @config, @workspace, @assert}) ->
constructor: ({@editor, @hostElement, @rootElement, @stylesElement, @useShadowDOM, tileSize, @views, @themes, @config, @workspace, @assert, @grammars}) ->
@tileSize = tileSize if tileSize?
@disposables = new CompositeDisposable
@ -85,7 +85,7 @@ class TextEditorComponent
@hiddenInputComponent = new InputComponent
@scrollViewNode.appendChild(@hiddenInputComponent.getDomNode())
@linesComponent = new LinesComponent({@presenter, @hostElement, @useShadowDOM, @domElementPool, @assert})
@linesComponent = new LinesComponent({@presenter, @hostElement, @useShadowDOM, @domElementPool, @assert, @grammars})
@scrollViewNode.appendChild(@linesComponent.getDomNode())
@horizontalScrollbarComponent = new ScrollbarComponent({orientation: 'horizontal', onScroll: @onHorizontalScroll})

View File

@ -27,6 +27,7 @@ class TextEditorElement extends HTMLElement
@assert = atom.assert
@views = atom.views
@styles = atom.styles
@grammars = atom.grammars
@emitter = new Emitter
@subscriptions = new CompositeDisposable
@ -86,13 +87,14 @@ class TextEditorElement extends HTMLElement
@subscriptions.add @component.onDidChangeScrollLeft =>
@emitter.emit("did-change-scroll-left", arguments...)
initialize: (model, {@views, @config, @themes, @workspace, @assert, @styles}) ->
initialize: (model, {@views, @config, @themes, @workspace, @assert, @styles, @grammars}) ->
throw new Error("Must pass a config parameter when initializing TextEditorElements") unless @views?
throw new Error("Must pass a config parameter when initializing TextEditorElements") unless @config?
throw new Error("Must pass a themes parameter when initializing TextEditorElements") unless @themes?
throw new Error("Must pass a workspace parameter when initializing TextEditorElements") unless @workspace?
throw new Error("Must pass a assert parameter when initializing TextEditorElements") unless @assert?
throw new Error("Must pass a styles parameter when initializing TextEditorElements") unless @styles?
throw new Error("Must pass a grammars parameter when initializing TextEditorElements") unless @grammars?
@setModel(model)
this
@ -140,6 +142,7 @@ class TextEditorElement extends HTMLElement
config: @config
workspace: @workspace
assert: @assert
grammars: @grammars
)
@rootElement.appendChild(@component.getDomNode())

View File

@ -2,7 +2,7 @@
module.exports =
class TokenIterator
constructor: (line) ->
constructor: ({@grammarRegistry}, line) ->
@reset(line) if line?
reset: (@line) ->
@ -11,7 +11,7 @@ class TokenIterator
@bufferEnd = @bufferStart
@screenStart = 0
@screenEnd = 0
@scopes = @line.openScopes.map (id) -> atom.grammars.scopeForId(id)
@scopes = @line.openScopes.map (id) => @grammarRegistry.scopeForId(id)
@scopeStarts = @scopes.slice()
@scopeEnds = []
this
@ -31,7 +31,7 @@ class TokenIterator
while @index < tags.length
tag = tags[@index]
if tag < 0
scope = atom.grammars.scopeForId(tag)
scope = @grammarRegistry.scopeForId(tag)
if tag % 2 is 0
if @scopeStarts[@scopeStarts.length - 1] is scope
@scopeStarts.pop()

View File

@ -37,7 +37,7 @@ class TokenizedBuffer extends Model
@emitter = new Emitter
@disposables = new CompositeDisposable
@tokenIterator = new TokenIterator
@tokenIterator = new TokenIterator({@grammarRegistry})
@disposables.add @grammarRegistry.onDidAddGrammar(@grammarAddedOrUpdated)
@disposables.add @grammarRegistry.onDidUpdateGrammar(@grammarAddedOrUpdated)