     @updateLineMessages()
 
     @renderPanel()
-    @tabs['file'].count = counts.file
-    @tabs['project'].count = counts.project
+    @tabs['File'].count = counts.file
+    @tabs['Project'].count = counts.project
     @bottomStatus.count = counts.project
 
   updateTabs: ->
-    visible = @getVisibleTabs()
     for key, tab of @tabs # for...of (key, value)
       tab.classList.remove('first')
       tab.classList.remove('last')
-      tab.visibility = visible.indexOf(key) isnt -1
+      tab.visibility = atom.config.get("linter.showErrorTab#{key}")
 
   # consumed in editor-linter, _renderPanel
   updateBubble: (point) ->

      @tabs.forEach (tab, key) -> tab.active = Tab is key
      @renderPanel()
    @setShowPanel @showPanel

  getVisibleTabs: ->
    toReturn = []
    toReturn.push 'line' if atom.config.get('linter.showErrorTabLine')
    toReturn.push 'file' if atom.config.get('linter.showErrorTabFile')
    toReturn.push 'project' if atom.config.get('linter.showErrorTabProject')
    toReturn

  removeBubble: ->
    return unless @bubble

      @messages.forEach (message) =>
        if message.currentFile and message.range?.intersectsRow @currentLine
          @lineMessages.push message
      @tabs['Line'].count = @lineMessages.length

  # This method is called when we get the status-bar service
  attachBottom: (statusBar) ->
    @statusTiles.push statusBar.addLeftTile
      item: @tabs['Line'],
      priority: -1002
    @statusTiles.push statusBar.addLeftTile
      item: @tabs['File'],
      priority: -1001
    @statusTiles.push statusBar.addLeftTile
      item: @tabs['Project'],
      priority: -1000
    statusIconPosition = atom.config.get('linter.statusIconPosition')
    @statusTiles.push statusBar["add#{statusIconPosition}Tile"]
