       @emit 'selection-added', selection
       selection
 
-  # Public: Add a selection for the given range in buffer coordinates.
-  #
-  # * `bufferRange` A {Range}
-  # * `options` (optional) An options {Object}:
-  #   * `reversed` A {Boolean} indicating whether to create the selection in a
-  #     reversed orientation.
-  #
-  # Returns the added {Selection}.
-  addSelectionForBufferRange: (bufferRange, options={}) ->
-    @markBufferRange(bufferRange, _.defaults(@getSelectionMarkerAttributes(), options))
-    selection = @getLastSelection()
-    selection.autoscroll() if @manageScrollPosition
-    selection
-
-  # Public: Set the selected range in buffer coordinates. If there are multiple
-  # selections, they are reduced to a single selection with the given range.
-  #
-  # * `bufferRange` A {Range} or range-compatible {Array}.
-  # * `options` (optional) An options {Object}:
-  #   * `reversed` A {Boolean} indicating whether to create the selection in a
-  #     reversed orientation.
-  setSelectedBufferRange: (bufferRange, options) ->
-    @setSelectedBufferRanges([bufferRange], options)
-
-  # Public: Set the selected range in screen coordinates. If there are multiple
-  # selections, they are reduced to a single selection with the given range.
-  #
-  # * `screenRange` A {Range} or range-compatible {Array}.
-  # * `options` (optional) An options {Object}:
-  #   * `reversed` A {Boolean} indicating whether to create the selection in a
-  #     reversed orientation.
-  setSelectedScreenRange: (screenRange, options) ->
-    @setSelectedBufferRange(@bufferRangeForScreenRange(screenRange, options), options)
-
-  # Public: Set the selected ranges in buffer coordinates. If there are multiple
-  # selections, they are replaced by new selections with the given ranges.
-  #
-  # * `bufferRanges` An {Array} of {Range}s or range-compatible {Array}s.
-  # * `options` (optional) An options {Object}:
-  #   * `reversed` A {Boolean} indicating whether to create the selection in a
-  #     reversed orientation.
-  setSelectedBufferRanges: (bufferRanges, options={}) ->
-    throw new Error("Passed an empty array to setSelectedBufferRanges") unless bufferRanges.length
-
-    selections = @getSelections()
-    selection.destroy() for selection in selections[bufferRanges.length...]
-
-    @mergeIntersectingSelections options, =>
-      for bufferRange, i in bufferRanges
-        bufferRange = Range.fromObject(bufferRange)
-        if selections[i]
-          selections[i].setBufferRange(bufferRange, options)
-        else
-          @addSelectionForBufferRange(bufferRange, options)
-
   # Remove the given selection.
   removeSelection: (selection) ->
     _.remove(@selections, selection)

    deprecate("Use Editor::moveToBeginningOfPreviousParagraph() instead")
    @moveToBeginningOfPreviousParagraph()

  # Extended: Returns the word surrounding the most recently added cursor.
  #
  # * `options` (optional) See {Cursor::getBeginningOfCurrentWordBufferPosition}.
  getWordUnderCursor: (options) ->
    @getTextInBufferRange(@getCursor().getCurrentWordBufferRange(options))

  # Extended: Get the most recently added {Cursor}.
  getCursor: ->
    _.last(@cursors)

  # Extended: Get an Array of all {Cursor}s.
  getCursors: -> new Array(@cursors...)

  selectionScreenRangeChanged: (selection) ->
    @emit 'selection-screen-range-changed', selection


  ###
  Section: Scrolling the Editor
