         button.setEnabled(false) if disable
 
       if btnErrors.length > 0
-        atom.notifications.addError 'Invalid toolbar.json', {
+        buttons = [{
+          text: 'Edit Config'
+          onDidClick: => atom.workspace.open @configFilePath
+        }]
+        if @projectToolbarConfigPath?
+          buttons.push [{
+            text: 'Edit Project Config'
+            onDidClick: => atom.workspace.open @projectToolbarConfigPath
+          }]
+        atom.notifications.addError 'Invalid toolbar config', {
           detail: btnErrors.join '\n\n'
           dismissable: true
-          buttons: [{
-            text: 'Edit Config'
-            onDidClick: => atom.workspace.open @configFilePath
-          }]
+          buttons: buttons
         }
 
       @pollFunctions()

          hide = ( btn.hide? && @condition(btn.hide) ) or ( btn.show? && !@condition(btn.show) )
          disable = ( btn.disable? && @condition(btn.disable) ) or ( btn.enable? && !@condition(btn.enable) )
        catch err
          btnErrors.push "#{err.message}\n#{util.inspect(btn, depth: 4)}"
          continue

        continue if hide

        editor = atom.workspace.getActivePaneItem()

        for condition in @functionConditions
          try
            if condition.value isnt !!condition.func(editor)
              reload = true
              break
          catch err
            buttons = [{
              text: 'Edit Config'
              onDidClick: => atom.workspace.open @configFilePath
            }]
            if @projectToolbarConfigPath?
              buttons.push [{
                text: 'Edit Project Config'
                onDidClick: => atom.workspace.open @projectToolbarConfigPath
              }]
            atom.notifications.addError 'Invalid toolbar config', {
              detail: err.stack or err.toString()
              dismissable: true
              buttons: buttons
            }
            return

        if reload
          @reloadToolbar()
