diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 06bee4a34..cc293fcbd 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -866,22 +866,16 @@ class DisplayBuffer extends Model return unless line.text.length > softWrapColumn if /\s/.test(line.text[softWrapColumn]) - # search forward for the start of a word past the boundary - for column in [softWrapColumn..line.text.length] - if /\S/.test(line.text[column]) - if line.tokens[0].isPhantom && column <= line.tokens[0].screenDelta - continue + # search forward for the start of a word past the boundary + for column in [softWrapColumn..line.text.length] when line.isOutsidePhantomToken(column) + return column if /\S/.test(line.text[column]) - return column return line.text.length else # search backward for the start of the word on the boundary - for column in [softWrapColumn..0] - if /\s/.test(line.text[column]) - if line.tokens[0].isPhantom && column <= line.tokens[0].screenDelta - continue + for column in [softWrapColumn..0] when line.isOutsidePhantomToken(column) + return column + 1 if /\s/.test(line.text[column]) - return column + 1 return softWrapColumn # Calculates a {Range} representing the start of the {TextBuffer} until the end. diff --git a/src/tokenized-line.coffee b/src/tokenized-line.coffee index b8156967f..3bf9407b3 100644 --- a/src/tokenized-line.coffee +++ b/src/tokenized-line.coffee @@ -124,6 +124,9 @@ class TokenizedLine isSoftWrapped: -> @lineEnding is null + isOutsidePhantomToken: (column) -> + !@tokens[0].isPhantom || column > @tokens[0].screenDelta + tokenAtBufferColumn: (bufferColumn) -> @tokens[@tokenIndexAtBufferColumn(bufferColumn)]