   didAddDecoration: (decoration) ->
     @observeDecoration(decoration)
 
-    return if @batchMode
+    return if @isInBatchMode()
     if decoration.isType('line') or decoration.isType('line-number')
       @addToLineDecorationCaches(decoration, decoration.getMarker().getScreenRange())
       @updateLinesState() if decoration.isType('line')

    @model.setVerticalScrollbarWidth(@measuredVerticalScrollbarWidth) if @measuredVerticalScrollbarWidth?
    @model.setHorizontalScrollbarHeight(@measuredHorizontalScrollbarHeight) if @measuredHorizontalScrollbarHeight?

  observeModel: ->
    @disposables.add @model.onWillMoveCursors =>
      @batchMode = true

    @disposables.add @model.onDidMoveCursors =>
      @batchMode = false

      @updateStartRow()
      @updateEndRow()
      @updateHeightState()
      @didStartScrolling()
      @updateVerticalScrollState()
      @updateHorizontalScrollState()
      @updateScrollbarsState()
      @updateContentState()
      @updateDecorations()
      @updateLinesState()
      @updateGutterState()
      @updateLineNumbersState()

    @disposables.add @model.onWillSelectMultiple =>
      @batchMode = true

    @disposables.add @model.onDidSelectMultiple =>
      @batchMode = false

      @updateStartRow()
      @updateEndRow()
      @updateHeightState()
      @didStartScrolling()
      @updateVerticalScrollState()
      @updateHorizontalScrollState()
      @updateScrollbarsState()
      @updateContentState()
      @updateDecorations()
      @updateLinesState()
      @updateGutterState()
      @updateLineNumbersState()

    @disposables.add @model.onDidChange =>
      return if @batchMode

      @updateContentDimensions()
      @updateEndRow()

    unless @scrollTop is scrollTop or Number.isNaN(scrollTop)
      @scrollTop = scrollTop
      @model.setScrollTop(scrollTop)
      return if @isInBatchMode()

      @updateStartRow()
      @updateEndRow()
