   getPreMeasurementState: ->
     @updating = true
 
-    @updateBlockDecorations() if @shouldUpdateBlockDecorations
+    @updateBlockDecorations()
     @updateVerticalDimensions()
     @updateScrollbarDimensions()
 

  setBlockDecorationDimensions: (decoration, width, height) ->
    screenRow = decoration.getMarker().getHeadScreenPosition().row
    dimensions = {width, height}

    screenRowDecorations = @blockDecorationsDimensionsByScreenRow[screenRow] ?= {}
    screenRowDecorations[decoration.id] = dimensions
    @blockDecorationsDimensionsById[decoration.id] = dimensions

    @setScreenRowHeight(
      screenRow,
      @lineHeight + @getBlockDecorationsHeight(_.values(screenRowDecorations))
    )

    @shouldUpdateBlockDecorations = true
    @shouldUpdateVerticalScrollState = true
    @emitDidUpdateState()

  updateBlockDecorations: ->
    # TODO: Move this inside `DisplayBuffer`
    blockDecorations = {}
    for decoration in @model.getDecorations(type: "block")
      blockDecorations[decoration.id] = decoration

    for screenRow, decorations of @blockDecorationsDimensionsByScreenRow
      for decorationId of decorations when not blockDecorations.hasOwnProperty(decorationId)
        delete @blockDecorationsDimensionsById[decorationId]
        delete @blockDecorationsDimensionsByScreenRow[screenRow][decorationId]

    @shouldUpdateVerticalScrollState = true

  observeCursor: (cursor) ->
    didChangePositionDisposable = cursor.onDidChangePosition =>

      @shouldUpdateLineNumbersState = true
      @shouldUpdateDecorations = true
      @shouldUpdateOverlaysState = true
      @shouldUpdateVerticalScrollState = true
      @shouldUpdateCustomGutterDecorationState = true
      @emitDidUpdateState()
