Merge branch 'fold-simplification' of github.com:github/atom into fold-simplification

This commit is contained in:
Nathan Sobo
2012-05-21 17:56:16 -07:00
3 changed files with 88 additions and 85 deletions

View File

@@ -16,39 +16,35 @@ class Fold
@renderer.destroyFold(this)
getRange: ->
# new Range([@startRow, 0], @endRow)
throw "Don't worry about this yet -- sobo"
getBufferDelta: ->
new Point(@endRow - @startRow + 1, 0)
handleBufferChange: (event) ->
# oldStartRow = @start.row
oldStartRow = @startRow
# { oldRange } = event
# if oldRange.start.isLessThanOrEqual(@start) and oldRange.end.isGreaterThanOrEqual(@end)
# @renderer.unregisterFold(oldStartRow, this)
# return
{ oldRange } = event
if oldRange.start.row <= @startRow and oldRange.end.row >= @endRow
@renderer.unregisterFold(oldStartRow, this)
return
# changeInsideFold = @start.isLessThanOrEqual(oldRange.start) and @end.isGreaterThan(oldRange.end)
changeInsideFold = @startRow <= oldRange.start.row and @endRow >= oldRange.end.row
@startRow = @updateAnchorRow(@startRow, event)
@endRow = @updateAnchorRow(@endRow, event)
# @start = @updateAnchorPoint(@start, event)
# @end = @updateAnchorPoint(@end, event, false)
if @startRow != oldStartRow
@renderer.unregisterFold(oldStartRow, this)
@renderer.registerFold(@startRow, this)
# if @start.row != oldStartRow
# @renderer.unregisterFold(oldStartRow, this)
# @lineFolder.registerFold(@start.row, this)
changeInsideFold
# changeInsideFold
updateAnchorRow: (row, event) ->
{ newRange, oldRange } = event
return row if row < oldRange.start.row
updateAnchorPoint: (point, event, inclusive=true) ->
# { newRange, oldRange } = event
# if inclusive
# return point if oldRange.end.isGreaterThan(point)
# else
# return point if oldRange.end.isGreaterThanOrEqual(point)
# newRange.end.add(point.subtract(oldRange.end))
deltaFromOldRangeEndRow = row - oldRange.end.row
newRange.end.row + deltaFromOldRangeEndRow
compare: (other) ->
other

View File

@@ -120,6 +120,7 @@ class Renderer
oldScreenRange = @screenLineRangeForBufferRange(oldBufferRange)
newScreenLines = @buildLinesForBufferRows(newBufferRange.start.row, newBufferRange.end.row)
@lineMap.replaceScreenRows oldScreenRange.start.row, oldScreenRange.end.row, newScreenLines
newScreenRange = @screenLineRangeForBufferRange(newBufferRange)
@@ -131,18 +132,19 @@ class Renderer
buildLinesForBufferRows: (startBufferRow, endBufferRow) ->
lineFragments = []
startBufferColumn = null
currentBufferRow = startBufferRow
currentScreenLineLength = 0
startBufferColumn = 0
while startBufferRow <= endBufferRow
screenLine = @highlighter.lineForRow(startBufferRow)
while currentBufferRow <= endBufferRow
screenLine = @highlighter.lineForRow(currentBufferRow)
if fold = @largestFoldForBufferRow(startBufferRow)
if fold = @largestFoldForBufferRow(currentBufferRow)
screenLine = screenLine.copy()
screenLine.fold = fold
screenLine.bufferDelta = fold.getBufferDelta()
lineFragments.push(screenLine)
startBufferRow = fold.endRow + 1
currentBufferRow = fold.endRow + 1
continue
startBufferColumn ?= 0
@@ -153,7 +155,7 @@ class Renderer
screenLine.screenDelta = new Point(1, 0)
startBufferColumn += wrapScreenColumn
else
startBufferRow++
currentBufferRow++
startBufferColumn = 0
lineFragments.push(screenLine)
@@ -189,7 +191,6 @@ class Renderer
(folds.sort (a, b) -> b.endRow - a.endRow)[0]
buildFoldPlaceholder: (fold) ->
# token = new Token(value: '...', type: 'fold-placeholder', fold: fold, isAtomic: true)
# delta = new Point(fold.endRow - fold.startRow + 1, 0)
# new ScreenLineFragment([token], token.value, [0, token.value.length], delta)