From 89dc5f26add13aae6506896c450cb31f737e613d Mon Sep 17 00:00:00 2001 From: probablycorey Date: Wed, 28 May 2014 15:56:08 -0700 Subject: [PATCH] Only emit the tokenized event after the first full tokenization --- spec/tokenized-buffer-spec.coffee | 16 ++++++++++++++++ src/tokenized-buffer.coffee | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/spec/tokenized-buffer-spec.coffee b/spec/tokenized-buffer-spec.coffee index 3ada12205..413bf4802 100644 --- a/spec/tokenized-buffer-spec.coffee +++ b/spec/tokenized-buffer-spec.coffee @@ -398,6 +398,22 @@ describe "TokenizedBuffer", -> tokenizedBuffer.on 'tokenized', tokenizedHandler fullyTokenize(tokenizedBuffer) expect(tokenizedHandler.callCount).toBe(1) + + it "doesn't re-emit the `tokenized` event when a line is edited", -> + editor = null + tokenizedHandler = jasmine.createSpy("tokenized handler") + + waitsForPromise -> + atom.project.open('sample.js').then (o) -> editor = o + + runs -> + tokenizedBuffer = editor.displayBuffer.tokenizedBuffer + fullyTokenize(tokenizedBuffer) + + tokenizedBuffer.on 'tokenized', tokenizedHandler + editor.getBuffer().insert([0, 0], "'") + fullyTokenize(tokenizedBuffer) + expect(tokenizedHandler).not.toHaveBeenCalled() buffer = null tokenizedBuffer = null tokenizedHandler = jasmine.createSpy("tokenized handler") diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index 1d17249e2..97afcd89b 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -78,6 +78,7 @@ class TokenizedBuffer extends Model @tokenizedLines = @buildPlaceholderTokenizedLinesForRows(0, @buffer.getLastRow()) @invalidRows = [] @invalidateRow(0) + @fullyTokenized = false setVisible: (@visible) -> @tokenizeInBackground() if @visible @@ -127,7 +128,8 @@ class TokenizedBuffer extends Model if @firstInvalidRow()? @tokenizeInBackground() else - @emit "tokenized" + @emit "tokenized" unless @fullyTokenized + @fullyTokenized = true firstInvalidRow: -> @invalidRows[0]