   run: (klass, properties) ->
     klass = Base.getClass(klass) if _.isString(klass)
     try
-      #  To support, `dd`, `cc` and a like.
-      if (@peekTop()?.constructor is klass)
-        klass = Base.getClass('MoveToRelativeLine')
+      # When identical operator repeated, it set target to MoveToRelativeLine.
+      #  e.g. `dd`, `cc`, `gUgU`
+      klass = MoveToRelativeLine if (@peekTop()?.constructor is klass)
 
       @stack.push @composeOperation(new klass(@vimState, properties))
-      @processing = true
       @process()
     catch error
       @handleError(error)

Base = require './base'
{moveCursorLeft} = require './utils'
settings = require './settings'
{CurrentSelection, Select} = {}

class OperationStack
  constructor: (@vimState) ->


    CurrentSelection ?= Base.getClass('CurrentSelection')
    Select ?= Base.getClass('Select')
    MoveToRelativeLine ?= Base.getClass('MoveToRelativeLine')

    # [Experimental] Cache for performance
    @currentSelection = new CurrentSelection(@vimState)
