diff --git a/spec/display-buffer-spec.coffee b/spec/display-buffer-spec.coffee index 1f2fd18ea..9f00eff3a 100644 --- a/spec/display-buffer-spec.coffee +++ b/spec/display-buffer-spec.coffee @@ -686,7 +686,7 @@ describe "DisplayBuffer", -> expect(marker2.getScreenRange()).toEqual [[5, 4], [5, 10]] it "emits a 'marker-created' event on the DisplayBuffer whenever a marker is created", -> - displayBuffer.on 'marker-created', markerCreatedHandler = jasmine.createSpy("markerCreatedHandler") + displayBuffer.onDidCreateMarker markerCreatedHandler = jasmine.createSpy("markerCreatedHandler") marker1 = displayBuffer.markScreenRange([[5, 4], [5, 10]]) expect(markerCreatedHandler).toHaveBeenCalledWith(marker1) @@ -1041,9 +1041,8 @@ describe "DisplayBuffer", -> describe 'when a marker is created', -> it 'the second display buffer will not emit a marker-created event when the marker has been deleted in the first marker-created event', -> displayBuffer2 = new DisplayBuffer({buffer, tabLength}) - displayBuffer.on 'marker-created', markerCreated1 = jasmine.createSpy().andCallFake (marker) -> - marker.destroy() - displayBuffer2.on 'marker-created', markerCreated2 = jasmine.createSpy() + displayBuffer.onDidCreateMarker markerCreated1 = jasmine.createSpy().andCallFake (marker) -> marker.destroy() + displayBuffer2.onDidCreateMarker markerCreated2 = jasmine.createSpy() displayBuffer.markBufferRange([[0, 0], [1, 5]], {}) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index a85695bca..8e1aa8a19 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -120,6 +120,12 @@ class DisplayBuffer extends Model onDidRemoveDecoration: (callback) -> @emitter.on 'did-remove-decoration', callback + onDidCreateMarker: (callback) -> + @emitter.on 'did-create-marker', callback + + onDidUpdateMarkers: (callback) -> + @emitter.on 'did-update-markers', callback + on: (eventName) -> switch eventName when 'changed' @@ -138,6 +144,10 @@ class DisplayBuffer extends Model Grim.deprecate("Use decoration.getMarker().onDidChange() instead") when 'decoration-updated' Grim.deprecate("Use Decoration::onDidChangeProperties instead") + when 'marker-created' + Grim.deprecate("Use Decoration::onDidCreateMarker instead") + when 'markers-updated' + Grim.deprecate("Use Decoration::onDidUpdateMarkers instead") # else # Grim.deprecate("DisplayBuffer::on is deprecated. Use event subscription methods instead.") @@ -1003,6 +1013,7 @@ class DisplayBuffer extends Model resumeMarkerChangeEvents: -> marker.resumeChangeEvents() for marker in @getMarkers() @emit 'markers-updated' + @emitter.emit 'did-update-markers' refreshMarkerScreenPositions: -> for marker in @getMarkers() @@ -1133,6 +1144,7 @@ class DisplayBuffer extends Model # The marker might have been removed in some other handler called before # this one. Only emit when the marker still exists. @emit 'marker-created', displayBufferMarker + @emitter.emit 'did-create-marker', displayBufferMarker createFoldForMarker: (marker) -> @decorateMarker(marker, type: 'gutter', class: 'folded') diff --git a/src/editor.coffee b/src/editor.coffee index 4f92e503a..1093c1479 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -261,9 +261,9 @@ class Editor extends Model @preserveCursorPositionOnBufferReload() subscribeToDisplayBuffer: -> - @subscribe @displayBuffer, 'marker-created', @handleMarkerCreated + @subscribe @displayBuffer.onDidCreateMarker @handleMarkerCreated @subscribe @displayBuffer.onDidChange (e) => @emit 'screen-lines-changed', e - @subscribe @displayBuffer, "markers-updated", => @mergeIntersectingSelections() + @subscribe @displayBuffer.onDidUpdateMarkers => @mergeIntersectingSelections() @subscribe @displayBuffer.onDidChangeGrammar => @handleGrammarChange() @subscribe @displayBuffer.onDidTokenize => @handleTokenization()