         swrap.resetProperties(@editor)
         @activateMode('visual', 'characterwise')
 
+# [FIXME] deperecate once spec is updated
 class SelectAllInRangeMarker extends AddSelection
   @extend()
   target: "RangeMarker"

  restorePoint: (selection) ->
    which = if @wasNeedStay then 'head' else 'start'
    if swrap(selection).getProperties().head?
      @onDidFinishOperation =>
        # Deffer restoring cursor point.
        # restorePoint is processed one by one, so immediately updating cursorPosition result in intersecting range with other selection
        # when intersecting selection is destroyed, cursor is moved automatically.

      if markerForTrackChange?
        @setMarkForChange(range) if (range = markerForTrackChange.getBufferRange())

  # called by operationStack
  setOperatorModifier: ({occurence, wise}) ->
    if occurence? and @withOccurrence isnt occurence
      @withOccurrence = occurence

    if wise? and @forceWise isnt wise
      @forceWise = wise

  # @target - TextObject or Motion to operate on.
  setTarget: (@target) ->
    unless _.isFunction(@target.select)
      @vimState.emitter.emit('did-fail-to-set-target')
      throw new OperatorError("#{@getName()} cannot set #{@target.getName()} as target")
    @target.setOperator(this)
    @overrideTargetWise(@forceWise) if @forceWise?
    @emitDidSetTarget(this)
    this

  overrideTargetWise: (wise) ->
    switch wise
      when 'characterwise'
        if @target.linewise
