From 4d796f614c0ab86f9de475da365d1f58669448c9 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 27 Oct 2014 13:56:15 -0600 Subject: [PATCH] Update Tokenized/DisplayBuffer prior to TextBuffer::onDidChange handlers Fixes #3789 --- package.json | 2 +- spec/display-buffer-spec.coffee | 5 +++++ src/tokenized-buffer.coffee | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 336ff9440..1253c2aaa 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "serializable": "^1", "space-pen": "3.8.0", "temp": "0.7.0", - "text-buffer": "^3.2.10", + "text-buffer": "^3.3.0", "theorist": "^1.0.2", "underscore-plus": "^1.6.1", "vm-compatibility-layer": "0.1.0" diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index b5583c0ad..5f04a3df9 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -56,6 +56,11 @@ describe "DisplayBuffer", -> buffer.delete([[8, 0], [10, 0]]) expect(displayBuffer.getScrollTop()).toBe 60 + it "updates the display buffer prior to invoking change handlers registered on the buffer", -> + buffer.onDidChange -> expect(displayBuffer2.tokenizedLineForScreenRow(0).text).toBe "testing" + displayBuffer2 = new DisplayBuffer({buffer, tabLength}) + buffer.setText("testing") + describe "soft wrapping", -> beforeEach -> displayBuffer.setSoftWrapped(true) diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index 625bbdc1a..756ecebb6 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -29,7 +29,7 @@ class TokenizedBuffer extends Model @subscribe atom.syntax.onDidAddGrammar(@grammarAddedOrUpdated) @subscribe atom.syntax.onDidUpdateGrammar(@grammarAddedOrUpdated) - @subscribe @buffer.onDidChange (e) => @handleBufferChange(e) + @subscribe @buffer.preemptDidChange (e) => @handleBufferChange(e) @subscribe @buffer.onDidChangePath (@bufferPath) => @reloadGrammar() @reloadGrammar()