       item: @bottomContainer,
       priority: -100
 
-  removeMarkers: ->
-    @markers.forEach (marker) -> try marker.destroy()
-    @markers = []
+  removeMarkers: (messages = @messages) ->
+    messages.forEach((message) =>
+      marker = @markers.get(message.key)
+      try marker.destroy()
+      @markers.delete(message.key)
+    )
 
   removeBubble: ->
     @bubble?.destroy()

      messages = @messages.filter (message) -> message.currentLine
    @panel.updateMessages messages, @state.scope is 'Project'

  renderPanelMarkers: ->
    @removeMarkers()
    activeEditor = atom.workspace.getActiveTextEditor()
    return unless activeEditor
    @messages.forEach (message) =>
      return unless message.currentFile
      @markers.push marker = activeEditor.markBufferRange message.range, {invalidate: 'inside'}
      activeEditor.decorateMarker(
        marker, type: 'line-number', class: "linter-highlight #{message.class}"
      )

    @state = @linter.state
    @subscriptions = new CompositeDisposable
    @messages = []
    @markers = new Map()
    @panel = new BottomPanel().prepare()
    @bottomContainer = new BottomContainer().prepare(@linter.state)
    @bottomBar = null
