Fix exception when auto-indenting after fold placeholder.

Propagate state when splitting and concatenating screen line fragments, because we were passing an undefined state to the auto-indenter.
This commit is contained in:
Nathan Sobo
2012-03-13 15:50:43 -06:00
parent c102711336
commit 06a3f3d376
2 changed files with 15 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ Point = require 'point'
module.exports =
class ScreenLineFragment
isAtomic: false
state: null
constructor: (@tokens, @text, screenDelta, bufferDelta, extraFields) ->
@screenDelta = Point.fromObject(screenDelta)
@@ -29,8 +30,8 @@ class ScreenLineFragment
[leftScreenDelta, rightScreenDelta] = @screenDelta.splitAt(column)
[leftBufferDelta, rightBufferDelta] = @bufferDelta.splitAt(column)
leftFragment = new ScreenLineFragment(leftTokens, leftText, leftScreenDelta, leftBufferDelta)
rightFragment = new ScreenLineFragment(rightTokens, rightText, rightScreenDelta, rightBufferDelta)
leftFragment = new ScreenLineFragment(leftTokens, leftText, leftScreenDelta, leftBufferDelta, {@state})
rightFragment = new ScreenLineFragment(rightTokens, rightText, rightScreenDelta, rightBufferDelta, {@state})
[leftFragment, rightFragment]
splitTokenAt: (token, splitIndex) ->
@@ -44,7 +45,7 @@ class ScreenLineFragment
text = @text + other.text
screenDelta = @screenDelta.add(other.screenDelta)
bufferDelta = @bufferDelta.add(other.bufferDelta)
new ScreenLineFragment(tokens, text, screenDelta, bufferDelta)
new ScreenLineFragment(tokens, text, screenDelta, bufferDelta, {state: other.state})
isSoftWrapped: ->
@screenDelta.row == 1 and @bufferDelta.row == 0