Emit 'marker-added/removed' when buffer markers are created/destroyed

This commit is contained in:
Nathan Sobo
2013-04-29 11:38:16 -06:00
parent 3b52cd018b
commit 883127f0d6
2 changed files with 20 additions and 2 deletions

View File

@@ -781,6 +781,12 @@ describe 'Buffer', ->
expect(buffer.positionForCharacterIndex(20)).toEqual [3, 0]
describe "markers", ->
[markerAddedHandler, markerRemovedHandler] = []
beforeEach ->
buffer.on('marker-added', markerAddedHandler = jasmine.createSpy("markerAddedHandler"))
buffer.on('marker-removed', markerRemovedHandler = jasmine.createSpy("markerRemovedHandler"))
describe "marker creation", ->
it "allows markers to be created with ranges and positions", ->
marker1 = buffer.markRange([[4, 20], [4, 23]])
@@ -800,6 +806,10 @@ describe 'Buffer', ->
expect(marker.getHeadPosition()).toEqual [4, 20]
expect(marker.getTailPosition()).toEqual [4, 23]
it "emits the 'marker-added' event when markers are created", ->
marker = buffer.markRange([[4, 20], [4, 23]])
expect(markerAddedHandler).toHaveBeenCalledWith(marker)
describe "marker manipulation", ->
marker = null
beforeEach ->
@@ -995,6 +1005,10 @@ describe 'Buffer', ->
buffer.undo()
expect(buffer.getMarker(marker2.id)).toBeUndefined()
it "emits 'marker-removed' when markers are destroyed", ->
marker.destroy()
expect(markerRemovedHandler).toHaveBeenCalledWith(marker)
describe "marker updates due to buffer changes", ->
[marker1, marker2, marker3] = []

View File

@@ -476,6 +476,8 @@ class Buffer
attributes
}, options))
@validMarkers[marker.id] = marker
@trigger 'marker-added', marker
marker
# Public: Constructs a new marker at a given position.
#
@@ -645,8 +647,10 @@ class Buffer
###
destroyMarker: (id) ->
delete @validMarkers[id]
delete @invalidMarkers[id]
if marker = @validMarkers[id] ? @invalidMarkers[id]
delete @validMarkers[id]
delete @invalidMarkers[id]
@trigger 'marker-removed', marker
scheduleModifiedEvents: ->
clearTimeout(@stoppedChangingTimeout) if @stoppedChangingTimeout