From 8b53b4d749a5e683cb3031fc63a223a396a2b3f4 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Thu, 18 Jul 2013 10:25:03 -0700 Subject: [PATCH] Add ability to copy display buffer markers --- spec/app/display-buffer-spec.coffee | 12 ++++++++++++ src/app/display-buffer-marker.coffee | 13 +++++++++++++ vendor/telepath | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/spec/app/display-buffer-spec.coffee b/spec/app/display-buffer-spec.coffee index 6143ec221..377a3f4f3 100644 --- a/spec/app/display-buffer-spec.coffee +++ b/spec/app/display-buffer-spec.coffee @@ -841,3 +841,15 @@ describe "DisplayBuffer", -> marker2.on 'destroyed', destroyedHandler buffer.getMarker(marker2.id).destroy() expect(destroyedHandler).toHaveBeenCalled() + + describe "DisplayBufferMarker.copy(attributes)", -> + it "creates a copy of the marker with the given attributes merged in", -> + initialMarkerCount = displayBuffer.getMarkerCount() + marker1 = displayBuffer.markScreenRange([[5, 4], [5, 10]], a: 1, b: 2) + expect(displayBuffer.getMarkerCount()).toBe initialMarkerCount + 1 + + marker2 = marker1.copy(b: 3) + expect(marker2.getBufferRange()).toEqual marker1.getBufferRange() + expect(displayBuffer.getMarkerCount()).toBe initialMarkerCount + 2 + expect(marker1.getAttributes()).toEqual a: 1, b: 2, invalidation: 'overlap' + expect(marker2.getAttributes()).toEqual a: 1, b: 3, invalidation: 'overlap' diff --git a/src/app/display-buffer-marker.coffee b/src/app/display-buffer-marker.coffee index 7265636dc..a46c1ec5e 100644 --- a/src/app/display-buffer-marker.coffee +++ b/src/app/display-buffer-marker.coffee @@ -27,6 +27,9 @@ class DisplayBufferMarker ### Public ### + copy: (attributes) -> + @displayBuffer.getMarker(@bufferMarker.copy(attributes).id) + # Gets the screen range of the display marker. # # Returns a {Range}. @@ -119,6 +122,9 @@ class DisplayBufferMarker clearTail: -> @bufferMarker.clearTail() + hasTail: -> + @bufferMarker.hasTail() + # Returns whether the head precedes the tail in the buffer isReversed: -> @bufferMarker.isReversed() @@ -146,6 +152,13 @@ class DisplayBufferMarker @bufferMarker.destroy() @unsubscribe() + isEqual: (other) -> + return false unless other instanceof @constructor + @getBufferRange().isEqual(other.getBufferRange()) and + @isReversed() is other.isReversed() and + @hasTail() is other.hasTail() and + _.isEqual(@getAttributes(), other.getAttributes()) + # Returns a {String} representation of the marker inspect: -> "DisplayBufferMarker(id: #{@id}, bufferRange: #{@getBufferRange().inspect()})" diff --git a/vendor/telepath b/vendor/telepath index 93c2eff34..8cc54e703 160000 --- a/vendor/telepath +++ b/vendor/telepath @@ -1 +1 @@ -Subproject commit 93c2eff34a3600e0f6c8ea73f7ae01f1f713559d +Subproject commit 8cc54e7038a474e3c24940f4895e62b278de8a26