From 7f1bb6958073c74273c0b93fac9099c9145acc81 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Sat, 14 Feb 2015 19:04:53 +0100 Subject: [PATCH] Initial attempt --- src/display-buffer.coffee | 2 +- src/token.coffee | 8 ++++++++ src/tokenized-line.coffee | 10 +++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 1177dd15f..fabf72532 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -841,7 +841,7 @@ class DisplayBuffer extends Model if screenLine.isSoftWrapped() and column >= maxScreenColumn if wrapAtSoftNewlines row++ - column = 0 + column = @screenLines[row].tokens[0].value.length # TODO: call screenLine.clipScreenColumn else column = screenLine.clipScreenColumn(maxScreenColumn - 1) else if wrapBeyondNewlines and column > maxScreenColumn and row < @getLastRow() diff --git a/src/token.coffee b/src/token.coffee index 85afe680e..78ccbfbb4 100644 --- a/src/token.coffee +++ b/src/token.coffee @@ -144,6 +144,14 @@ class Token isHardTab: isHardTab ) + buildPhantomToken: (length) -> + new Token( + value: _.multiplyString(" ", length), + scopes: @scopes, + bufferDelta: 0, + isAtomic: true + ) + isOnlyWhitespace: -> not WhitespaceRegex.test(@value) diff --git a/src/tokenized-line.coffee b/src/tokenized-line.coffee index d1576ab9a..612333198 100644 --- a/src/tokenized-line.coffee +++ b/src/tokenized-line.coffee @@ -97,19 +97,23 @@ class TokenizedLine leftTextLength += nextToken.value.length leftTokens.push nextToken + tab = leftTokens[0].buildPhantomToken(@indentLevel * 2) + leftFragment = new TokenizedLine( tokens: leftTokens startBufferColumn: @startBufferColumn ruleStack: @ruleStack invisibles: @invisibles - lineEnding: null + lineEnding: null, + indentLevel: @indentLevel ) rightFragment = new TokenizedLine( - tokens: rightTokens + tokens: [tab].concat(rightTokens) startBufferColumn: @bufferColumnForScreenColumn(column) ruleStack: @ruleStack invisibles: @invisibles - lineEnding: @lineEnding + lineEnding: @lineEnding, + indentLevel: @indentLevel ) [leftFragment, rightFragment]