 
 class ToggleCaseAndMoveRight extends ToggleCase
   @extend()
-  cursorPositionOnOperate: null
+  finalPosition: null
   hover: null
   preCompose: 'MoveRight'
 

class ReplaceWithRegister extends Operator
  @extend()
  hover: icon: ':replace-with-register:', emoji: ':pencil:'
  cursorPositionOnOperate:
    default: 'startPointOfSelection'
    stay: 'pointBeforeSelect'
    config: 'stayOnReplaceWithRegister'
  execute: ->
    @eachSelection (s) =>

        class: 'vim-mode-plus-flash'
        timeout: settings.get('flashOnOperateDuration')

  preservePoints: ({moveToFirstChar, asMarker}={}) ->
    points = _.pluck(@editor.getSelectedBufferRanges(), 'start')
    if asMarker?
      options = {invalidate: 'never', persistent: false}
      markers = @editor.getCursorBufferPositions().map (point) =>
        @editor.markBufferPosition point, options
      ({cursor}, i) ->
        point = markers[i].getStartBufferPosition()
        cursor.setBufferPosition(point)
    else if moveToFirstChar?
      ({cursor}, i) ->
        cursor.setBufferPosition(points[i])
        cursor.moveToFirstCharacterOfLine()
    else
      ({cursor}, i) ->
        cursor.setBufferPosition(points[i])

  # restoreCursor would be set to one of following value,
  #  point: original cursor position
