   @description: "Sort lines alphabetically"
   getNewRows: (rows) ->
     rows.sort()
-
-# -------------------------
-class Repeat extends Operator
-  @extend()
-  requireTarget: false
-  recordable: false
-
-  execute: ->
-    @editor.transact =>
-      @countTimes =>
-        if operation = @vimState.operationStack.getRecorded()
-          operation.setRepeated()
-          operation.execute()
 
 # -------------------------
 # [FIXME?]: inconsistent behavior from normal operator

    selection.insertText(text, {@autoIndent})
    @restorePoint(selection) if @setPoint

# String Transformer
# -------------------------
class ToggleCase extends TransformString
  @extend()
  @registerToSelectList()

class SelectOccurrenceInAll extends SelectOccurrence
  @extend()
  target: "All"

class ConvertRangeMarkerToSelection extends Select
  @extend()
  flashTarget: false
  target: "ARangeMarker"
  execute: ->
    super
    @vimState.clearRangeMarkers()


# Range Marker
# =========================
class CreateRangeMarker extends Operator
  @extend()
  keepCursorPosition: true
  flashTarget: false

  mutateSelection: (selection) ->
    @vimState.addRangeMarkersForRanges([selection.getBufferRange()])
    if selection.isLastSelection()
      @restorePoint(selection)
    else
      selection.destroy()

class ToggleRangeMarker extends CreateRangeMarker
  @extend()
  getRangeMarkerAtCursor: ->
    point = @editor.getCursorBufferPosition()

    containsPoint = (rangeMarker, point) ->
      rangeMarker.getBufferRange().containsPoint(point, exclusive)

    exclusive = false
    for rangeMarker in @vimState.getRangeMarkers() when containsPoint(rangeMarker, point)
      return rangeMarker

  initialize: ->
    rangeMarker = @getRangeMarkerAtCursor()
    if rangeMarker?
      rangeMarker.destroy()
      @vimState.removeRangeMarker(rangeMarker)
      @abort()

class ToggleRangeMarkerOnInnerWord extends ToggleRangeMarker
  @extend()
  target: 'InnerWord'

# Delete
# ================================
