diff --git a/package.json b/package.json index d5f85aa56..eb5de3599 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "space-pen": "3.8.2", "stacktrace-parser": "0.1.1", "temp": "0.8.1", - "text-buffer": "6.3.8", + "text-buffer": "6.3.9", "theorist": "^1.0.2", "typescript-simple": "1.0.0", "underscore-plus": "^1.6.6", diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 6d3f47bea..01ec82c6e 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -23,6 +23,7 @@ class DisplayBuffer extends Model verticalScrollMargin: 2 horizontalScrollMargin: 6 scopedCharacterWidthsChangeCount: 0 + changeCount: 0 constructor: ({tabLength, @editorWidthInChars, @tokenizedBuffer, buffer, ignoreInvisibles, @largeFileMode}={}) -> super @@ -800,6 +801,11 @@ class DisplayBuffer extends Model foldCount: @findFoldMarkers().length lastBufferRow: @buffer.getLastRow() lastScreenRow: @getLastRow() + bufferRow: row + screenRow: screenRow + displayBufferChangeCount: @changeCount + tokenizedBufferChangeCount: @tokenizedBuffer.changeCount + bufferChangeCount: @buffer.changeCount maxBufferColumn = screenLine.getMaxBufferColumn() if screenLine.isSoftWrapped() and column > maxBufferColumn @@ -898,6 +904,9 @@ class DisplayBuffer extends Model screenColumn: column maxScreenRow: @getLastRow() screenLinesDefined: @screenLines.map (sl) -> sl? + displayBufferChangeCount: @changeCount + tokenizedBufferChangeCount: @tokenizedBuffer.changeCount + bufferChangeCount: @buffer.changeCount } throw error @@ -1179,6 +1188,7 @@ class DisplayBuffer extends Model @tokenizedBuffer.rootScopeDescriptor handleTokenizedBufferChange: (tokenizedBufferChange) => + @changeCount = @tokenizedBuffer.changeCount {start, end, delta, bufferChange} = tokenizedBufferChange @updateScreenLines(start, end + 1, delta, refreshMarkers: false) @setScrollTop(Math.min(@getScrollTop(), @getMaxScrollTop())) if delta < 0 diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index b08efd7a8..7592f3c6b 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -23,6 +23,7 @@ class TokenizedBuffer extends Model invalidRows: null visible: false configSettings: null + changeCount: 0 constructor: ({@buffer, @tabLength, @ignoreInvisibles, @largeFileMode}) -> @emitter = new Emitter @@ -229,6 +230,8 @@ class TokenizedBuffer extends Model row + delta handleBufferChange: (e) -> + @changeCount = @buffer.changeCount + {oldRange, newRange} = e start = oldRange.start.row end = oldRange.end.row @@ -296,10 +299,12 @@ class TokenizedBuffer extends Model # undefined. This should paper over the problem but we want to figure out # what is happening: tokenizedLine = @tokenizedLineForRow(row) - atom.assert tokenizedLine?, "TokenizedLine is defined", (error) => + atom.assert tokenizedLine?, "TokenizedLine is undefined", (error) => error.metadata = { row: row rowCount: @tokenizedLines.length + tokenizedBufferChangeCount: @changeCount + bufferChangeCount: @buffer.changeCount } return false unless tokenizedLine?