Replace TokenizedBuffer.setVisible with simpler .startTokenizing

We will still wait to tokenize a buffer until it is visible in *some*
tab, but we no longer enable and disable tokenization as different
editors become visible.
This commit is contained in:
Max Brunsfeld
2017-11-28 12:12:40 -08:00
parent e08091f193
commit 61ac366491
3 changed files with 17 additions and 17 deletions

View File

@@ -23,12 +23,8 @@ describe('TokenizedBuffer', () => {
tokenizedBuffer && tokenizedBuffer.destroy()
})
function startTokenizing (tokenizedBuffer) {
tokenizedBuffer.setVisible(true)
}
function fullyTokenize (tokenizedBuffer) {
tokenizedBuffer.setVisible(true)
tokenizedBuffer.startTokenizing()
while (tokenizedBuffer.firstInvalidRow() != null) {
advanceClock()
}
@@ -67,7 +63,7 @@ describe('TokenizedBuffer', () => {
beforeEach(() => {
buffer = atom.project.bufferForPathSync('sample.js')
tokenizedBuffer = new TokenizedBuffer({buffer, config, config, grammar: atom.grammars.grammarForScopeName('source.js')})
startTokenizing(tokenizedBuffer)
tokenizedBuffer.startTokenizing()
})
it('stops tokenization', () => {
@@ -83,7 +79,7 @@ describe('TokenizedBuffer', () => {
buffer = atom.project.bufferForPathSync('sample.js')
tokenizedBuffer = new TokenizedBuffer({buffer, config, grammar: atom.grammars.grammarForScopeName('source.js')})
buffer.setLanguageMode(tokenizedBuffer)
startTokenizing(tokenizedBuffer)
tokenizedBuffer.startTokenizing()
})
afterEach(() => {
@@ -298,7 +294,7 @@ describe('TokenizedBuffer', () => {
buffer = atom.project.bufferForPathSync('sample-with-tabs.coffee')
tokenizedBuffer = new TokenizedBuffer({buffer, config, grammar: atom.grammars.grammarForScopeName('source.coffee')})
startTokenizing(tokenizedBuffer)
tokenizedBuffer.startTokenizing()
})
afterEach(() => {
@@ -445,7 +441,7 @@ describe('TokenizedBuffer', () => {
const jsScopeStartId = grammar.startIdForScope(grammar.scopeName)
const jsScopeEndId = grammar.endIdForScope(grammar.scopeName)
startTokenizing(tokenizedBuffer)
tokenizedBuffer.startTokenizing()
expect(tokenizedBuffer.tokenizedLines[0]).toBeUndefined()
expect(tokenizedBuffer.tokenizedLineForRow(0).text).toBe(line0)
expect(tokenizedBuffer.tokenizedLineForRow(0).tags).toEqual([jsScopeStartId, line0.length, jsScopeEndId])

View File

@@ -953,8 +953,10 @@ class TextEditor {
// Controls visibility based on the given {Boolean}.
setVisible (visible) {
const languageMode = this.buffer.getLanguageMode()
languageMode.setVisible && languageMode.setVisible(visible)
if (visible) {
const languageMode = this.buffer.getLanguageMode()
if (languageMode.startTokenizing) languageMode.startTokenizing()
}
}
setMini (mini) {
@@ -4130,7 +4132,9 @@ class TextEditor {
}
const languageMode = this.buffer.getLanguageMode()
if (languageMode.setVisible) languageMode.setVisible(this.component && this.component.visible)
if (this.component && this.component.visible && languageMode.startTokenizing) {
languageMode.startTokenizing()
}
this.languageModeSubscription = languageMode.onDidTokenize && languageMode.onDidTokenize(() => {
this.emitter.emit('did-tokenize')
})

View File

@@ -23,7 +23,7 @@ class TokenizedBuffer {
this.regexesByPattern = {}
this.alive = true
this.visible = false
this.tokenizationStarted = false
this.id = params.id != null ? params.id : nextId++
this.buffer = params.buffer
this.largeFileMode = params.largeFileMode
@@ -255,15 +255,15 @@ class TokenizedBuffer {
}
}
setVisible (visible) {
this.visible = visible
if (this.visible && this.grammar.name !== 'Null Grammar' && !this.largeFileMode) {
startTokenizing () {
this.tokenizationStarted = true
if (this.grammar.name !== 'Null Grammar' && !this.largeFileMode) {
this.tokenizeInBackground()
}
}
tokenizeInBackground () {
if (!this.visible || this.pendingChunk || !this.alive) return
if (!this.tokenizationStarted || this.pendingChunk || !this.alive) return
this.pendingChunk = true
_.defer(() => {