diff --git a/src/app/buffer-change-operation.coffee b/src/app/buffer-change-operation.coffee index c50bb2308..2a31ab244 100644 --- a/src/app/buffer-change-operation.coffee +++ b/src/app/buffer-change-operation.coffee @@ -9,7 +9,8 @@ class BufferChangeOperation newRange: null newText: null - constructor: ({@buffer, @oldRange, @newText}) -> + constructor: ({@buffer, @oldRange, @newText, @options}) -> + @options ?= {} do: -> @oldText = @buffer.getTextInRange(@oldRange) @@ -52,7 +53,9 @@ class BufferChangeOperation startRow = oldRange.start.row endRow = oldRange.end.row - if suggestedLineEnding = @buffer.suggestedLineEndingForRow(startRow) + + normalizeLineEndings = @options.normalizeLineEndings ? true + if normalizeLineEndings and suggestedLineEnding = @buffer.suggestedLineEndingForRow(startRow) lineEndings[index] = suggestedLineEnding for index in [0..lastLineIndex] @buffer.lines[startRow..endRow] = lines @buffer.lineEndings[startRow..endRow] = lineEndings diff --git a/src/app/buffer.coffee b/src/app/buffer.coffee index cbff0b2d9..266b30ba2 100644 --- a/src/app/buffer.coffee +++ b/src/app/buffer.coffee @@ -109,8 +109,7 @@ class Buffer @cachedMemoryContents ?= @getTextInRange(@getRange()) setText: (text) -> - @lineEndings = [] - @change(@getRange(), text) + @change(@getRange(), text, normalizeLineEndings: false) getRange: -> new Range([0, 0], [@getLastRow(), @getLastLine().length]) @@ -206,9 +205,9 @@ class Buffer delete: (range) -> @change(range, '') - change: (oldRange, newText) -> + change: (oldRange, newText, options) -> oldRange = Range.fromObject(oldRange) - operation = new BufferChangeOperation({buffer: this, oldRange, newText}) + operation = new BufferChangeOperation({buffer: this, oldRange, newText, options}) range = @pushOperation(operation) range