diff --git a/spec/atom/editor-spec.coffee b/spec/atom/editor-spec.coffee index da6d51df1..3756d1ec3 100644 --- a/spec/atom/editor-spec.coffee +++ b/spec/atom/editor-spec.coffee @@ -536,13 +536,21 @@ describe "Editor", -> beforeEach -> editor.autoIndent = true - describe "when line renders on one screen line", -> - describe "when newline is inserted", -> + describe "when editing a line that spans a single screen line", -> + describe "when a newline is inserted", -> it "indents cursor based on the indentation of previous buffer line", -> editor.setCursorBufferPosition([1, 30]) editor.insertText("\n") expect(editor.buffer.lineForRow(2)).toEqual(" ") + describe "when a newline is inserted following a fold placeholder", -> + it "indents cursor based on the indentation of previous buffer line", -> + editor.createFold([[1, 10], [1, 30]]) + editor.setCursorBufferPosition([1, 30]) + editor.insertText("\n") + expect(editor.buffer.lineForRow(2)).toEqual(" ") + + describe "when text beginning with a newline is inserted", -> it "indents cursor based on the indentation of previous buffer line", -> editor.setCursorBufferPosition([4, 29]) editor.insertText("\nvar thisIsCool") @@ -557,7 +565,7 @@ describe "Editor", -> expect(editor.buffer.lineForRow(2)).toEqual(" }") expect(editor.getCursorBufferPosition().column).toBe 3 - describe "when line spans multiple screen lines", -> + describe "when editing a line that spans multiple screen lines", -> beforeEach -> editor.attachToDom() editor.setSoftWrap(true) diff --git a/src/atom/screen-line-fragment.coffee b/src/atom/screen-line-fragment.coffee index 5c487f33a..1889e3d60 100644 --- a/src/atom/screen-line-fragment.coffee +++ b/src/atom/screen-line-fragment.coffee @@ -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