Emit row-oriented screen lien change events from EditSession

This commit is contained in:
Nathan Sobo
2012-11-15 12:13:59 -07:00
parent 841e34090b
commit cf4e87103e
2 changed files with 12 additions and 11 deletions

View File

@@ -61,7 +61,16 @@ class EditSession
@displayBuffer.on "change.edit-session-#{@id}", (e) =>
@refreshAnchorScreenPositions() unless e.bufferChange
@trigger 'screen-lines-change', e
{ oldRange, newRange } = e
start = oldRange.start.row
end = oldRange.end.row
screenDelta = newRange.end.row - oldRange.end.row
if bufferChange = e.bufferChange
bufferDelta = bufferChange.newRange.end.row - bufferChange.oldRange.end.row
@trigger 'screen-lines-change', {start, end, screenDelta, bufferDelta}
destroy: ->
throw new Error("Edit session already destroyed") if @destroyed

View File

@@ -896,16 +896,8 @@ class Editor extends View
getLastVisibleScreenRow: ->
Math.max(0, Math.ceil((@scrollTop() + @scrollView.height()) / @lineHeight) - 1)
handleScreenLinesChange: (e) ->
{ oldRange, newRange } = e
start = oldRange.start.row
end = oldRange.end.row
screenDelta = newRange.end.row - oldRange.end.row
if bufferChange = e.bufferChange
bufferDelta = bufferChange.newRange.end.row - bufferChange.oldRange.end.row
@pendingChanges.push({start, end, screenDelta, bufferDelta})
handleScreenLinesChange: (change) ->
@pendingChanges.push(change)
@requestDisplayUpdate()
buildLineElementForScreenRow: (screenRow) ->