   ###
 
   emitChangeEvent: (currentRange, textChanged, propertiesChanged) ->
+    @store.markerUpdated(@id) unless textChanged
+    return unless @hasChangeObservers
     oldState = @previousEventState
 
     return false unless propertiesChanged or

  #
  # Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
  onDidChange: (callback) ->
    @emitter.on 'did-change', callback

  # Public: Returns the current {Range} of the marker. The range is immutable.

    @invalidate ?= 'overlap'
    @persistent ?= true
    @properties ?= {}
    @hasChangeObservers = false
    @rangeWhenDestroyed = null
    Object.freeze(@properties)
    @store.setMarkerHasTail(@id, @tailed)

  ###
  Section: Event Subscription
