 class Indent extends Operator
   @extend()
   hover: icon: ':indent:', emoji: ':point_right:'
-  cursorPositionOnOperate:
-    default: 'firstCharacterOfStartLineOfSelection'
-    stay: 'pointBeforeSelect'
+  finalPosition:
+    default: 'postSelectThenFirstChar'
     config: 'stayOnIndent'
 
   execute: ->

      if @needFlash()
        @flash @editor.getSelectedBufferRanges()

    @onWillSelect =>
      switch @getCursorPositionInstruction()
        when 'pointBeforeSelect'
          @finish = @preservePoints()
        when 'pointBeforeSelectAsMarker'
          @finish = @preservePointsAsMarker()
        when 'startPointOfSelection'
          @onDidSelect =>
            @finish = @preservePoints()
        when 'firstCharacterOfStartLineOfSelection'
          @onDidSelect =>
            restorePoints = @preservePoints()
            @finish = (selection, i) ->
              restorePoints(selection, i)
              selection.cursor.moveToFirstCharacterOfLine()

  # target - TextObject or Motion to operate on.
  compose: (@target) ->

  #  start: start point of selection after @target.select()
  #  firstChar: first char of start line of selection after @target.select()
  eachSelection: (fn) ->
    return unless @selectTarget()
    @editor.transact =>
      for selection, i in @editor.getSelections()
        fn(selection)
        @finish?(selection, i)

class Select extends Operator
  @extend(false)
