From 9714f2e7294fb9e539da9bd97692913b640589ad Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 4 Nov 2015 11:26:07 -0800 Subject: [PATCH] Emit decoration events synchronously in legacy spec environment This is needed to keep a bunch of package tests passing that expect synchronous decoration updates. --- src/display-buffer.coffee | 7 +++++++ src/text-editor-element.coffee | 5 ++++- src/text-editor.coffee | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index b04fe7b08..e1bfff70f 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -27,6 +27,7 @@ class DisplayBuffer extends Model height: null width: null didUpdateDecorationsEventScheduled: false + updatedSynchronously: false @deserialize: (state, atomEnvironment) -> state.tokenizedBuffer = TokenizedBuffer.deserialize(state.tokenizedBuffer, atomEnvironment) @@ -186,6 +187,8 @@ class DisplayBuffer extends Model # visible - A {Boolean} indicating of the tokenized buffer is shown setVisible: (visible) -> @tokenizedBuffer.setVisible(visible) + setUpdatedSynchronously: (@updatedSynchronously) -> + getVerticalScrollMargin: -> maxScrollMargin = Math.floor(((@getHeight() / @getLineHeightInPixels()) - 1) / 2) Math.min(@verticalScrollMargin, maxScrollMargin) @@ -1065,6 +1068,10 @@ class DisplayBuffer extends Model @emitter.emit 'did-create-marker', marker scheduleUpdateDecorationsEvent: -> + if @updatedSynchronously + @emitter.emit 'did-update-decorations' + return + unless @didUpdateDecorationsEventScheduled @didUpdateDecorationsEventScheduled = true process.nextTick => diff --git a/src/text-editor-element.coffee b/src/text-editor-element.coffee index 55e23d2da..1a55eb002 100644 --- a/src/text-editor-element.coffee +++ b/src/text-editor-element.coffee @@ -103,6 +103,7 @@ class TextEditorElement extends HTMLElement return if model.isDestroyed() @model = model + @model.setUpdatedSynchronously(@isUpdatedSynchronously()) @initializeContent() @mountComponent() @addGrammarScopeAttribute() @@ -194,7 +195,9 @@ class TextEditorElement extends HTMLElement hasFocus: -> this is document.activeElement or @contains(document.activeElement) - setUpdatedSynchronously: (@updatedSynchronously) -> @updatedSynchronously + setUpdatedSynchronously: (@updatedSynchronously) -> + @model?.setUpdatedSynchronously(@updatedSynchronously) + @updatedSynchronously isUpdatedSynchronously: -> @updatedSynchronously diff --git a/src/text-editor.coffee b/src/text-editor.coffee index da077ae2b..8cc80f142 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -506,6 +506,9 @@ class TextEditor extends Model isMini: -> @mini + setUpdatedSynchronously: (updatedSynchronously) -> + @displayBuffer.setUpdatedSynchronously(updatedSynchronously) + onDidChangeMini: (callback) -> @emitter.on 'did-change-mini', callback