Handle changes to unfolded text directly preceding a fold placeholder

This commit is contained in:
Nathan Sobo
2012-02-23 16:32:57 -07:00
parent 16a2fd0bb3
commit d229585cd4
2 changed files with 31 additions and 5 deletions

View File

@@ -7,11 +7,14 @@ EventEmitter = require 'event-emitter'
module.exports =
class LineFolder
lineMap: null
lastHighlighterChangeEvent: null
constructor: (@highlighter) ->
@activeFolds = {}
@buildLineMap()
@highlighter.buffer.on 'change', (e) => @handleBufferChange(e)
@highlighter.on 'change', (e) => @handleHighlighterChange(e)
@highlighter.on 'change', (e) => @lastHighlighterChangeEvent = e
buildLineMap: ->
@lineMap = new LineMap
@@ -64,11 +67,12 @@ class LineFolder
handleBufferChange: (e) ->
for row, folds of @activeFolds
fold.handleBufferChange(e) for fold in folds
@handleHighlighterChange(@lastHighlighterChangeEvent)
handleHighlighterChange: (e) ->
oldScreenRange = @expandScreenRangeToLineEnds(@screenRangeForBufferRange(e.oldRange))
lines = @buildLinesForBufferRows(e.newRange.start.row, e.newRange.end.row)
@lineMap.replaceScreenRows(e.oldRange.start.row, e.oldRange.end.row, lines)
@lineMap.replaceScreenRows(oldScreenRange.start.row, oldScreenRange.end.row, lines)
newScreenRange = @expandScreenRangeToLineEnds(@screenRangeForBufferRange(e.newRange))
@trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange