 
   lineForScreenRow: (row) ->
     @linesForScreenRows(row, row)[0]
+
+  linesForScreenRows: (startRow, endRow) ->
+    @linesByDelta('screenDelta', startRow, endRow)
+
+  lineForBufferRow: (row) ->
+    @linesForBufferRows(row, row)[0]
+
+  linesForBufferRows: (startRow, endRow) ->
+    @linesByDelta('bufferDelta', startRow, endRow)
 
   bufferLineCount: ->
     @bufferPositionForScreenPosition([Infinity, 0]).row


    @lineFragments[startIndex...stopIndex] = lineFragments

  linesForScreenRows: (startRow, endRow) ->
    lines = []
    delta = new Point


          pendingFragment = pendingFragment.concat(lineFragment)
        else
          pendingFragment = _.clone(lineFragment)
        if pendingFragment[deltaType].row > 0
          pendingFragment.bufferDelta = new Point(1, 0)
          lines.push pendingFragment
          pendingFragment = null
      delta = delta.add(lineFragment[deltaType])

    lines



  translatePosition: (sourceDeltaType, targetDeltaType, sourcePosition) ->
    sourcePosition = Point.fromObject(sourcePosition)
