@@ -824,14 +824,18 @@ class TextBuffer
824824
825825 oldRange = @ clipRange (range)
826826 oldText = @ getTextInRange (oldRange)
827+
828+ if normalizeLineEndings
829+ normalizedEnding = @preferredLineEnding or
830+ @ lineEndingForRow (oldRange .start .row ) or
831+ @ lineEndingForRow (oldRange .start .row - 1 )
832+ if normalizedEnding
833+ newText = newText .replace (newlineRegex, normalizedEnding)
834+
827835 change = {
828- oldStart : oldRange .start ,
829- newStart : oldRange .start ,
830- oldEnd : oldRange .end ,
831- newEnd : traverse (oldRange .start , extentForText (newText)),
832- oldText,
833- newText,
834- normalizeLineEndings
836+ oldStart : oldRange .start , oldEnd : oldRange .end ,
837+ newStart : oldRange .start , newEnd : traverse (oldRange .start , extentForText (newText))
838+ oldText, newText
835839 }
836840 @ applyChange (change, undo isnt ' skip' )
837841
@@ -861,25 +865,15 @@ class TextBuffer
861865
862866 # Applies a change to the buffer based on its old range and new text.
863867 applyChange : (change , pushToHistory = false ) ->
864- {newStart , newEnd , oldStart , oldEnd , oldText , newText , normalizeLineEndings } = change
868+ {newStart , newEnd , oldStart , oldEnd , oldText , newText } = change
865869
866870 oldExtent = traversal (oldEnd, oldStart)
867- newStart = Point .fromObject (newStart)
868- oldRange = Range (newStart, newStart .traverse (oldExtent))
871+ oldRange = Range (newStart, traverse (newStart, oldExtent))
869872 oldRange .freeze ()
870873
871- # Determine how to normalize the line endings of inserted text if enabled
872- if normalizeLineEndings
873- startRow = oldRange .start .row
874- normalizedEnding = @preferredLineEnding or
875- @ lineEndingForRow (startRow) or
876- @ lineEndingForRow (startRow - 1 )
877- if normalizedEnding
878- newText = newText .replace (newlineRegex, normalizedEnding)
879-
880- newRange = Range (newStart, newEnd)
874+ newExtent = traversal (newEnd, newStart)
875+ newRange = Range (newStart, traverse (newStart, newExtent))
881876 newRange .freeze ()
882- newExtent = newRange .getExtent ()
883877
884878 if pushToHistory
885879 change .oldExtent ?= oldExtent
0 commit comments