         when @isInclusive()
           @selectInclusive(selection, options)
         else
-          @selectExclusive(selection, options)
+          selection.modifySelection =>
+            @moveCursor(selection.cursor, options)
 
     @editor.mergeCursors()
     @editor.mergeIntersectingSelections()

# Refactoring status: 20%
# [TODO]
# #774
# #783

# Motion is either @inclusive or @exclusive
# Operator is either @linewise, @characterwise or @blockwise

{Point, Range} = require 'atom'
_ = require 'underscore-plus'


  # Action
  # -------------------------
  selectInclusive: (selection, options) ->
    {cursor} = selection

    # Selection maybe empty when Motion is used as target of Operator.
    if selection.isEmpty()
      originallyEmpty = true
      selection.selectRight()

    selection.modifySelection =>
      tailRange = @getTailRange(selection)
      cursor.moveLeft() unless selection.isReversed()
      @moveCursor(cursor, options)

      # Return if motion movement not happend if used as Operator target.
      return if (selection.isEmpty() and originallyEmpty)

      cursor.moveRight() unless selection.isReversed()
      selection.setBufferRange selection.getBufferRange().union(tailRange)

  # This tail position is always selected even if selection isReversed() as a result of cursor movement.
  getTailRange: (selection) ->
