From 438de204cade09e093603011b4fd299a1e6183ff Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 27 Sep 2013 10:12:13 -0700 Subject: [PATCH] Stop tokenizing buffer when it is destroyed --- spec/tokenized-buffer-spec.coffee | 12 ++++++++++++ src/tokenized-buffer.coffee | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spec/tokenized-buffer-spec.coffee b/spec/tokenized-buffer-spec.coffee index bf9d15581..55fa4a45f 100644 --- a/spec/tokenized-buffer-spec.coffee +++ b/spec/tokenized-buffer-spec.coffee @@ -26,6 +26,18 @@ describe "TokenizedBuffer", -> expect(tokenizedBuffer2.buffer).toBe tokenizedBuffer1.buffer expect(tokenizedBuffer2.getTabLength()).toBe tokenizedBuffer1.getTabLength() + describe "when the buffer is destroyed", -> + beforeEach -> + buffer = project.bufferForPath('sample.js') + tokenizedBuffer = new TokenizedBuffer({buffer}) + startTokenizing(tokenizedBuffer) + + it "stops tokenization", -> + tokenizedBuffer.destroy() + spyOn(tokenizedBuffer, 'tokenizeNextChunk') + advanceClock() + expect(tokenizedBuffer.tokenizeNextChunk).not.toHaveBeenCalled() + describe "when the buffer contains soft-tabs", -> beforeEach -> buffer = project.bufferForPath('sample.js') diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index c84091e24..cae54f8be 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -99,11 +99,11 @@ class TokenizedBuffer @trigger "changed", { start: 0, end: lastRow, delta: 0 } tokenizeInBackground: -> - return if not @visible or @pendingChunk + return if not @visible or @pendingChunk or @destroyed @pendingChunk = true _.defer => @pendingChunk = false - @tokenizeNextChunk() + @tokenizeNextChunk() unless @destroyed tokenizeNextChunk: -> rowsRemaining = @chunkSize @@ -249,6 +249,7 @@ class TokenizedBuffer destroy: -> @unsubscribe() + @destroyed = true iterateTokensInBufferRange: (bufferRange, iterator) -> bufferRange = Range.fromObject(bufferRange)