Deprecate DisplayBufferMarker::on

This commit is contained in:
Nathan Sobo
2014-09-04 13:28:19 -06:00
committed by Ben Ogle
parent c69b5fc0a0
commit 6bd8702421
3 changed files with 42 additions and 16 deletions

View File

@@ -998,16 +998,16 @@ describe "DisplayBuffer", ->
expect(marker.isValid()).toBeFalsy()
expect(displayBuffer.getMarker(marker.id)).toBeUndefined()
it "emits 'destroyed' events when markers are destroyed", ->
it "notifies ::onDidDestroy observers when markers are destroyed", ->
destroyedHandler = jasmine.createSpy("destroyedHandler")
marker = displayBuffer.markScreenRange([[5, 4], [5, 10]])
marker.on 'destroyed', destroyedHandler
marker.onDidDestroy destroyedHandler
marker.destroy()
expect(destroyedHandler).toHaveBeenCalled()
destroyedHandler.reset()
marker2 = displayBuffer.markScreenRange([[5, 4], [5, 10]])
marker2.on 'destroyed', destroyedHandler
marker2.onDidDestroy destroyedHandler
buffer.getMarker(marker2.id).destroy()
expect(destroyedHandler).toHaveBeenCalled()

View File

@@ -3,6 +3,7 @@ _ = require 'underscore-plus'
{Subscriber} = require 'emissary'
EmitterMixin = require('emissary').Emitter
{Emitter} = require 'event-kit'
Grim = require 'grim'
module.exports =
class DisplayBufferMarker
@@ -15,6 +16,7 @@ class DisplayBufferMarker
oldTailBufferPosition: null
oldTailScreenPosition: null
wasValid: true
deferredChangeEvents: null
constructor: ({@bufferMarker, @displayBuffer}) ->
@emitter = new Emitter
@@ -34,6 +36,15 @@ class DisplayBufferMarker
onDidDestroy: (callback) ->
@emitter.on 'did-destroy', callback
on: (eventName) ->
switch eventName
when 'changed'
Grim.deprecate("Use DisplayBufferMarker::onDidChange instead")
when 'destroyed'
Grim.deprecate("Use DisplayBufferMarker::onDidDestroy instead")
EmitterMixin::on.apply(this, arguments)
copy: (attributes) ->
@displayBuffer.getMarker(@bufferMarker.copy(attributes).id)
@@ -234,11 +245,26 @@ class DisplayBufferMarker
textChanged,
isValid
}
@emit 'changed', changeEvent
@emitter.emit 'did-change', changeEvent
if @deferredChangeEvents?
@deferredChangeEvents.push(changeEvent)
else
@emit 'changed', changeEvent
@emitter.emit 'did-change', changeEvent
@oldHeadBufferPosition = newHeadBufferPosition
@oldHeadScreenPosition = newHeadScreenPosition
@oldTailBufferPosition = newTailBufferPosition
@oldTailScreenPosition = newTailScreenPosition
@wasValid = isValid
pauseChangeEvents: ->
@deferredChangeEvents = []
resumeChangeEvents: ->
if deferredChangeEvents = @deferredChangeEvents
@deferredChangeEvents = null
for event in deferredChangeEvents
@emit 'changed', event
@emitter.emit 'did-change', event

View File

@@ -106,10 +106,10 @@ class DisplayBuffer extends Model
emitChanged: (eventProperties, refreshMarkers=true) ->
if refreshMarkers
@pauseMarkerObservers()
@pauseMarkerChangeEvents()
@refreshMarkerScreenPositions()
@emit 'changed', eventProperties
@resumeMarkerObservers()
@resumeMarkerChangeEvents()
updateWrappedScreenLines: ->
start = 0
@@ -788,10 +788,10 @@ class DisplayBuffer extends Model
decorateMarker: (marker, decorationParams) ->
marker = @getMarker(marker.id)
@decorationMarkerDestroyedSubscriptions[marker.id] ?= @subscribe marker, 'destroyed', =>
@decorationMarkerDestroyedSubscriptions[marker.id] ?= @subscribe marker.onDidDestroy =>
@removeAllDecorationsForMarker(marker)
@decorationMarkerChangedSubscriptions[marker.id] ?= @subscribe marker, 'changed', (event) =>
@decorationMarkerChangedSubscriptions[marker.id] ?= @subscribe marker.onDidChange (event) =>
decorations = @decorationsByMarkerId[marker.id]
# Why check existence? Markers may get destroyed or decorations removed
@@ -825,8 +825,8 @@ class DisplayBuffer extends Model
@removedAllMarkerDecorations(marker)
removedAllMarkerDecorations: (marker) ->
@decorationMarkerChangedSubscriptions[marker.id].off()
@decorationMarkerDestroyedSubscriptions[marker.id].off()
@decorationMarkerChangedSubscriptions[marker.id].dispose()
@decorationMarkerDestroyedSubscriptions[marker.id].dispose()
delete @decorationsByMarkerId[marker.id]
delete @decorationMarkerChangedSubscriptions[marker.id]
@@ -977,11 +977,11 @@ class DisplayBuffer extends Model
getFoldMarkerAttributes: (attributes={}) ->
_.extend(attributes, class: 'fold', displayBufferId: @id)
pauseMarkerObservers: ->
marker.pauseEvents() for marker in @getMarkers()
pauseMarkerChangeEvents: ->
marker.pauseChangeEvents() for marker in @getMarkers()
resumeMarkerObservers: ->
marker.resumeEvents() for marker in @getMarkers()
resumeMarkerChangeEvents: ->
marker.resumeChangeEvents() for marker in @getMarkers()
@emit 'markers-updated'
refreshMarkerScreenPositions: ->
@@ -1024,7 +1024,7 @@ class DisplayBuffer extends Model
bufferDelta: bufferDelta
if options.delayChangeEvent
@pauseMarkerObservers()
@pauseMarkerChangeEvents()
@pendingChangeEvent = changeEvent
else
@emitChanged(changeEvent, options.refreshMarkers)