From 0e67f357482fe75cfaf197b755a94c4402da783e Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 30 Jan 2013 21:04:52 -0700 Subject: [PATCH] Start on marker interface in `DisplayBuffer` --- spec/app/display-buffer-spec.coffee | 8 ++++++++ src/app/display-buffer.coffee | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/spec/app/display-buffer-spec.coffee b/spec/app/display-buffer-spec.coffee index 7444a3859..4e87832b4 100644 --- a/spec/app/display-buffer-spec.coffee +++ b/spec/app/display-buffer-spec.coffee @@ -579,3 +579,11 @@ describe "DisplayBuffer", -> describe ".maxLineLength()", -> it "returns the length of the longest screen line", -> expect(displayBuffer.maxLineLength()).toBe 65 + + describe "markers", -> + it "allows markers to be worked with in terms of both screen and buffer coordinates", -> + displayBuffer.foldBufferRow(4) + marker1 = displayBuffer.markScreenRange([[5, 4], [5, 10]]) + marker2 = displayBuffer.markBufferRange([[8, 4], [8, 10]]) + expect(displayBuffer.getMarkerBufferRange(marker1)).toEqual [[8, 4], [8, 10]] + expect(displayBuffer.getMarkerScreenRange(marker2)).toEqual [[5, 4], [5, 10]] diff --git a/src/app/display-buffer.coffee b/src/app/display-buffer.coffee index 4057c101a..d519250e7 100644 --- a/src/app/display-buffer.coffee +++ b/src/app/display-buffer.coffee @@ -290,6 +290,18 @@ class DisplayBuffer rangeForAllLines: -> new Range([0, 0], @clipScreenPosition([Infinity, Infinity])) + markScreenRange: (screenRange) -> + @markBufferRange(@bufferRangeForScreenRange(screenRange)) + + markBufferRange: (bufferRange) -> + @buffer.markRange(bufferRange) + + getMarkerScreenRange: (id) -> + @screenRangeForBufferRange(@getMarkerBufferRange(id)) + + getMarkerBufferRange: (id) -> + @buffer.getMarkerRange(id) + destroy: -> @tokenizedBuffer.destroy()