     number = parseInt(numberString, 10) + @step * @getCount()
     String(number)
 
+  execute: ->
+    @newRanges = []
+    super
+    if @newRanges.length
+      if settings.get('flashOnOperate') and (@getName() not in settings.get('flashOnOperateBlacklist'))
+        @vimState.flash(@newRanges, type: @flashTypeForOccurrence)
+
 class Decrease extends Increase
   @extend()
   step: -1

class IncrementNumber extends Operator
  @extend()
  displayName: 'Increment ++'
  step: 1
  baseNumber: null

  execute: ->
    pattern = ///#{settings.get('numberRegex')}///g
    newRanges = null

    @startMutation =>
      @selectTarget()
      newRanges = for selection in @editor.getSelectionsOrderedByBufferPosition()
        @replaceNumber(selection.getBufferRange(), pattern)

    if (newRanges = _.flatten(newRanges)).length
      @flashIfNecessary(newRanges)
    else
      atom.beep()
    for selection in @editor.getSelections()
      selection.cursor.setBufferPosition(selection.getBufferRange().start)
    @activateModeIfNecessary('normal')

  replaceNumber: (scanRange, pattern) ->
    newRanges = []
    @editor.scanInBufferRange pattern, scanRange, ({matchText, replace}) =>
      newRanges.push replace(@getNewText(matchText))
    newRanges

  getNewText: (text) ->
    @baseNumber = if @baseNumber?
      @baseNumber + @step * @getCount()
    else
      parseInt(text, 10)
    String(@baseNumber)

class DecrementNumber extends IncrementNumber

    newRange = null
    @editor.scanInBufferRange @pattern, scanRange, ({matchText, range, stop, replace}) =>
      if @target.is('CurrentSelection')
        @newRanges.push(replace(@getNextNumber(matchText)))
      else if range.end.isGreaterThan(initialPoint)
        newRange = replace(@getNextNumber(matchText))
        stop()
