From a229d696d54467eb521deba7daba18c556bd089d Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Thu, 5 Jun 2014 11:34:50 -0700 Subject: [PATCH] Add `addDecorationForBufferRowRange` and related remove --- src/display-buffer.coffee | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 11741d3d5..950315dea 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -741,6 +741,14 @@ class DisplayBuffer extends Model for decoration in removed @emit 'decoration-changed', {bufferRow, decoration, action: 'remove'} + addDecorationToBufferRowRange: (startBufferRow, endBufferRow, decoration) -> + while startBufferRow <= endBufferRow + @addDecorationToBufferRow(startBufferRow++, decoration) + + removeDecorationFromBufferRowRange: (startBufferRow, endBufferRow, decoration) -> + while startBufferRow <= endBufferRow + @removeDecorationFromBufferRow(startBufferRow++, decoration) + findDecorationsForBufferRow: (bufferRow, decorationPattern) -> return unless @decorations[bufferRow] decoration for decoration in @decorations[bufferRow] when @decorationMatchesPattern(decoration, decorationPattern) @@ -751,8 +759,7 @@ class DisplayBuffer extends Model addDecorationForMarker: (marker, decoration) -> startRow = marker.getStartBufferPosition().row endRow = marker.getEndBufferPosition().row - while startRow <= endRow - @addDecorationToBufferRow(startRow++, decoration) + @addDecorationToBufferRowRange(startRow, endRow, decoration) changedSubscription = @subscribe marker, 'changed', (e) => oldStartRow = e.oldHeadBufferPosition.row @@ -770,11 +777,8 @@ class DisplayBuffer extends Model # all decorations, then when markers becoming valid, some of the # overlap was not visible. - while oldStartRow <= oldEndRow - @removeDecorationFromBufferRow(oldStartRow++, decoration) - - while e.isValid and newStartRow <= newEndRow - @addDecorationToBufferRow(newStartRow++, decoration) + @removeDecorationFromBufferRowRange(oldStartRow, oldEndRow, decoration) + @addDecorationToBufferRowRange(newStartRow, newEndRow, decoration) if e.isValid destroyedSubscription = @subscribe marker, 'destroyed', (e) => @removeDecorationForMarker(marker, decoration)