       markerBySelections[selection.id] = marker
     markerBySelections
 
+  flash: (range) ->
+    marker = @editor.markBufferRange range,
+      invalidate: 'never',
+      persistent: false
+
+    @editor.decorateMarker marker,
+      type: 'highlight'
+      class: 'vim-mode-flash'
+
+    setTimeout  =>
+      marker.destroy()
+    , settings.get('flashOnOperateDurationMilliSeconds')
+
   withFlashing: (callback) ->
     unless settings.get('flashOnOperate')
       callback()

  linewiseAlias: true
  # [FIXME] duplicate to Yank, need to consolidate as like adjustCursor().
  execute: ->
    if @target.isLinewise?() or settings.get('stayOnTransformString')
      points = (s.getBufferRange().start for s in @editor.getSelections())
    if _.any @target.select()
      @withFlashing =>
        @editor.replaceSelectedText {}, @getNewText.bind(this)
      for selection in @editor.getSelections() when @adjustCursor
        point = points?.shift() ? selection.getBufferRange().start
        selection.cursor.setBufferPosition point
    @vimState.activateNormalMode()

class ToggleCase extends TransformString


      text = text.replace(/\n$/, '')
      range = selection.insertText(text)
      @flash range
      cursor.setBufferPosition(range.start)
      cursor.moveToFirstCharacterOfLine()
    else
      selection.insertText("\n")
      range = selection.insertText(text)
      @flash range
      cursor.setBufferPosition(range.start)

  pasteCharacterwise: (selection, text) ->
