diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index 5716b47b9..2916d7139 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -1074,7 +1074,7 @@ describe "DisplayBuffer", -> describe "when a decoration is updated via Decoration::update()", -> it "emits an 'updated' event containing the new and old params", -> - decoration.onDidUpdate updatedSpy = jasmine.createSpy() + decoration.onDidChange updatedSpy = jasmine.createSpy() decoration.update type: 'gutter', class: 'two' {oldParams, newParams} = updatedSpy.mostRecentCall.args[0] diff --git a/src/decoration.coffee b/src/decoration.coffee index f3c4604de..4b467f4a9 100644 --- a/src/decoration.coffee +++ b/src/decoration.coffee @@ -77,8 +77,8 @@ class Decoration # * `event` {Object} # * `oldParams` {Object} the old parameters the decoration used to have # * `newParams` {Object} the new parameters the decoration now has - onDidUpdate: (callback) -> - @emitter.on 'did-update', callback + onDidChange: (callback) -> + @emitter.on 'did-change', callback # Essential: Update the marker with new params. Allows you to change the decoration's class. # @@ -94,9 +94,9 @@ class Decoration oldParams = @params @params = newParams @params.id = @id - @displayBuffer.decorationUpdated(this) + @displayBuffer.decorationChanged(this) @emit 'updated', {oldParams, newParams} - @emitter.emit 'did-update', {oldParams, newParams} + @emitter.emit 'did-change', {oldParams, newParams} # Essential: Invoke the given callback when the {Decoration} is destroyed onDidDestroy: (callback) -> @@ -137,7 +137,7 @@ class Decoration on: (eventName) -> switch eventName when 'updated' - Grim.deprecate("Use Decoration::onDidUpdate instead") + Grim.deprecate("Use Decoration::onDidChange instead") when 'destroyed' Grim.deprecate("Use Decoration::onDidDestroy instead") when 'flash' diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index df7291ac4..43c36877f 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -112,6 +112,15 @@ class DisplayBuffer extends Model onDidChangeCharacterWidths: (callback) -> @emitter.on 'did-change-character-widths', callback + onDidAddDecoration: (callback) -> + @emitter.on 'did-add-decoration', callback + + onDidRemoveDecoration: (callback) -> + @emitter.on 'did-remove-decoration', callback + + onDidChangeDecoration: (callback) -> + @emitter.on 'did-change-decoration', callback + on: (eventName) -> switch eventName when 'changed' @@ -122,6 +131,14 @@ class DisplayBuffer extends Model Grim.deprecate("Use DisplayBuffer::onDidChangeSoftWrap instead") when 'character-widths-changed' Grim.deprecate("Use DisplayBuffer::onDidChangeCharacterWidths instead") + when 'decoration-added' + Grim.deprecate("Use DisplayBuffer::onDidAddDecoration instead") + when 'decoration-removed' + Grim.deprecate("Use DisplayBuffer::onDidRemoveDecoration instead") + when 'decoration-changed' + Grim.deprecate("Use DisplayBuffer::onDidChangeDecoration instead") + when 'decoration-updated' + Grim.deprecate("Use DisplayBuffer::onDidChangeDecoration instead") # else # Grim.deprecate("DisplayBuffer::on is deprecated. Use event subscription methods instead.") @@ -823,13 +840,15 @@ class DisplayBuffer extends Model # in the change handler. Bookmarks does this. if decorations? for decoration in decorations - @emit 'decoration-updated', decoration + @emit 'decoration-changed', decoration + @emitter.emit 'did-change-decoration', decoration decoration = new Decoration(marker, this, decorationParams) @decorationsByMarkerId[marker.id] ?= [] @decorationsByMarkerId[marker.id].push(decoration) @decorationsById[decoration.id] = decoration @emit 'decoration-added', decoration + @emitter.emit 'did-add-decoration', decoration decoration removeDecoration: (decoration) -> @@ -841,12 +860,14 @@ class DisplayBuffer extends Model decorations.splice(index, 1) delete @decorationsById[decoration.id] @emit 'decoration-removed', decoration + @emitter.emit 'did-remove-decoration', decoration @removedAllMarkerDecorations(marker) if decorations.length is 0 removeAllDecorationsForMarker: (marker) -> decorations = @decorationsByMarkerId[marker.id].slice() for decoration in decorations @emit 'decoration-removed', decoration + @emitter.emit 'did-remove-decoration', decoration @removedAllMarkerDecorations(marker) removedAllMarkerDecorations: (marker) -> @@ -857,8 +878,10 @@ class DisplayBuffer extends Model delete @decorationMarkerChangedSubscriptions[marker.id] delete @decorationMarkerDestroyedSubscriptions[marker.id] - decorationUpdated: (decoration) -> - @emit 'decoration-updated', decoration + # Called by the decoration + decorationChanged: (decoration) -> + @emit 'decoration-changed', decoration + @emitter.emit 'did-change-decoration', decoration # Retrieves a {DisplayBufferMarker} based on its id. # diff --git a/src/editor-component.coffee b/src/editor-component.coffee index 8824a8b0b..f596e3063 100644 --- a/src/editor-component.coffee +++ b/src/editor-component.coffee @@ -347,9 +347,9 @@ EditorComponent = React.createClass @subscribe editor, 'screen-lines-changed', @onScreenLinesChanged @subscribe editor.onDidAddCursor(@onCursorAdded) @subscribe editor.onDidAddSelection(@onSelectionAdded) - @subscribe editor, 'decoration-added', @onDecorationChanged - @subscribe editor, 'decoration-removed', @onDecorationChanged - @subscribe editor, 'decoration-updated', @onDecorationChanged + @subscribe editor.onDidAddDecoration @onDecorationChanged + @subscribe editor.onDidRemoveDecoration @onDecorationChanged + @subscribe editor.onDidChangeDecoration @onDecorationChanged @subscribe editor.onDidChangeCharacterWidths @onCharacterWidthsChanged @subscribe editor.$scrollTop.changes, @onScrollTopChanged @subscribe editor.$scrollLeft.changes, @requestUpdate diff --git a/src/editor.coffee b/src/editor.coffee index 15ea875f6..5d1a68b3d 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -266,10 +266,12 @@ class Editor extends Model @subscribe @displayBuffer, "markers-updated", => @mergeIntersectingSelections() @subscribe @displayBuffer.onDidChangeGrammar => @handleGrammarChange() @subscribe @displayBuffer.onDidTokenize => @handleTokenization() - @subscribe @displayBuffer.onDidChangeSoftWrapped (args...) => @emit 'soft-wrap-changed', args... - @subscribe @displayBuffer, "decoration-added", (args...) => @emit 'decoration-added', args... - @subscribe @displayBuffer, "decoration-removed", (args...) => @emit 'decoration-removed', args... - @subscribe @displayBuffer, "decoration-updated", (args...) => @emit 'decoration-updated', args... + + # TODO: remove these when we remove the deprecations. Though, no one is likely using them + @subscribe @displayBuffer.onDidChangeSoftWrapped (softWrapped) => @emit 'soft-wrap-changed', softWrapped + @subscribe @displayBuffer.onDidAddDecoration (decoration) => @emit 'decoration-added', decoration + @subscribe @displayBuffer.onDidRemoveDecoration (decoration) => @emit 'decoration-removed', decoration + @subscribe @displayBuffer.onDidChangeDecoration (decoration) => @emit 'decoration-changed', decoration getViewClass: -> require './editor-view' @@ -323,6 +325,15 @@ class Editor extends Model onDidRemoveSelection: (callback) -> @emitter.on 'did-remove-selection', callback + onDidAddDecoration: (callback) -> + @displayBuffer.onDidAddDecoration(callback) + + onDidRemoveDecoration: (callback) -> + @displayBuffer.onDidRemoveDecoration(callback) + + onDidChangeDecoration: (callback) -> + @displayBuffer.onDidChangeDecoration(callback) + # Retrieves the current {TextBuffer}. getBuffer: -> @buffer