       includeNewline = bufferRange.start.column == 0 or bufferRange.start.row >= fold.startRow
       bufferRange = bufferRange.union(fold.getBufferRange({ includeNewline }))
 
-    @modifyScreenRange =>
-      @editSession.buffer.delete(bufferRange) unless bufferRange.isEmpty()
-      @cursor?.setBufferPosition(bufferRange.start)
+    @editSession.buffer.delete(bufferRange) unless bufferRange.isEmpty()
+    @cursor?.setBufferPosition(bufferRange.start)
 
   deleteLine: ->
     if @isEmpty()

    { start, end } = screenRange
    [start, end] = [end, start] if options.reverse

    @modifyScreenRange =>
      @placeAnchor() unless @anchor
      @modifySelection =>
        @anchor.setScreenPosition(start)
        @cursor.setScreenPosition(end)

  setBufferRange: (bufferRange, options={}) ->
    bufferRange = Range.fromObject(bufferRange)
    { start, end } = bufferRange
    [start, end] = [end, start] if options.reverse

    @modifyScreenRange =>
      @editSession.destroyFoldsIntersectingBufferRange(bufferRange) unless options.preserveFolds
      @placeAnchor() unless @anchor
      @modifySelection =>
        @anchor.setBufferPosition(start, options)
        @cursor.setBufferPosition(end, options)

  getBufferRange: ->
    if @anchor

    @editSession.buffer.getTextInRange(@getBufferRange())

  clear: ->
    @anchor?.destroy()
    @anchor = null
    @emitChangeScreenRangeEvent()

  selectWord: ->
    @setBufferRange(@cursor.getCurrentWordBufferRange())
