mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Merge branch 'fold-simplification' of github.com:github/atom into fold-simplification
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user