     @changePosition options, =>
       @editSession.setMarkerHeadBufferPosition(@marker, bufferPosition, options)
 
-  # Public: Gets the current buffer position.
+  # Gets the current buffer position.
   #
   # Returns an {Array} of two numbers: the buffer row, and the buffer column.
   getBufferPosition: ->
     @editSession.getMarkerHeadBufferPosition(@marker)
 
-  # Public: If the marker range is empty, the cursor is marked as being visible.
+  # If the marker range is empty, the cursor is marked as being visible.
   updateVisibility: ->
     @setVisible(@editSession.isMarkerRangeEmpty(@marker))
 
-  # Public: Sets the visibility of the cursor.
+  # Sets the visibility of the cursor.
   #
   # visible - A {Boolean} indicating whether the cursor should be visible
   setVisible: (visible) ->

    range = [[row, Math.min(0, column - 1)], [row, Math.max(0, column + 1)]]
    /^\s+$/.test @editSession.getTextInBufferRange(range)

  # Public: Removes the setting for auto-scroll.
  clearAutoscroll: ->
    @needsAutoscroll = null

  # Public: Deselects whatever the cursor is selecting.
  clearSelection: ->
    if @selection
      @selection.goalBufferRange = null
      @selection.clear() unless @selection.retainSelection

  # Public: Retrieves the cursor's screen row.
  #
  # Returns a {Number}.
  getScreenRow: ->
    @getScreenPosition().row

  # Public: Retrieves the cursor's screen column.
  #
  # Returns a {Number}.
  getScreenColumn: ->
    @getScreenPosition().column

  # Public: Retrieves the cursor's buffer row.
  #
  # Returns a {Number}.
  getBufferRow: ->
    @getBufferPosition().row

  # Public: Retrieves the cursor's buffer column.
  #
  # Returns a {Number}.
  getBufferColumn: ->
    @getBufferPosition().column

  # Public: Retrieves the cursor's buffer row text.
  #
  # Returns a {String}.
  getCurrentBufferLine: ->
    @editSession.lineForBufferRow(@getBufferRow())

  # Public: Moves the cursor up one screen row.
  moveUp: (rowCount = 1) ->
    { row, column } = @getScreenPosition()
    column = @goalColumn if @goalColumn?
    @setScreenPosition({row: row - rowCount, column: column})
    @goalColumn = column

  # Public: Moves the cursor down one screen row.
  moveDown: (rowCount = 1) ->
    { row, column } = @getScreenPosition()
    column = @goalColumn if @goalColumn?
    @setScreenPosition({row: row + rowCount, column: column})
    @goalColumn = column

  # Public: Moves the cursor left one screen column.
  moveLeft: ->
    { row, column } = @getScreenPosition()
    [row, column] = if column > 0 then [row, column - 1] else [row - 1, Infinity]
    @setScreenPosition({row, column})

  # Public: Moves the cursor right one screen column.
  moveRight: ->
    { row, column } = @getScreenPosition()
    @setScreenPosition([row, column + 1], skipAtomicTokens: true, wrapBeyondNewlines: true, wrapAtSoftNewlines: true)

  # Public: Moves the cursor to the top of the buffer.
  moveToTop: ->
    @setBufferPosition([0,0])

  # Public: Moves the cursor to the bottom of the buffer.
  moveToBottom: ->
    @setBufferPosition(@editSession.getEofBufferPosition())

  # Public: Moves the cursor to the beginning of the buffer line.
  moveToBeginningOfLine: ->
    @setBufferPosition([@getBufferRow(), 0])

  # Public: Moves the cursor to the beginning of the first character in the line.
  moveToFirstCharacterOfLine: ->
    position = @getBufferPosition()
    scanRange = @getCurrentLineBufferRange()


    beginningOfWordPosition or currentBufferPosition

  # Retrieves the buffer position of where the current word ends.
  #
  # options - A hash with one option:
  #           :wordRegex - A {RegExp} indicating what constitutes a "word" (default: {wordRegExp})
