<!--
  ~ Copyright 2016 The Bazel Authors. All rights reserved.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<idea-plugin>
  <depends>com.intellij.modules.cidr.lang</depends>
  <depends>com.intellij.modules.cidr.debugger</depends>

  <application-components>
    <component>
      <implementation-class>
        com.google.idea.blaze.cpp.CidrSymbolBuilderSuppressor
      </implementation-class>
    </component>
  </application-components>

  <extensions defaultExtensionNs="com.google.idea.blaze">
    <SyncPlugin implementation="com.google.idea.blaze.cpp.BlazeCSyncPlugin"/>
    <PrefetchFileSource implementation="com.google.idea.blaze.cpp.CPrefetchFileSource"/>
    <SyncListener implementation="com.google.idea.blaze.cpp.BlazeCppSymbolRebuildSyncListener"/>
  </extensions>

  <extensions defaultExtensionNs="cidr.lang">
    <languageKindHelper implementation="com.google.idea.blaze.cpp.BlazeLanguageKindCalculatorHelper"/>
    <autoImportHelper implementation="com.google.idea.blaze.cpp.BlazeCppAutoImportHelper"/>
    <customHeaderProvider implementation="com.google.idea.blaze.cpp.BlazeCustomHeaderProvider"/>
  </extensions>
  <extensions defaultExtensionNs="com.intellij">
    <projectService serviceImplementation="com.google.idea.blaze.cpp.BlazeCWorkspace"/>
    <projectViewNodeDecorator implementation="com.google.idea.blaze.cpp.syncstatus.BlazeCppSyncStatusFileNodeDecorator"/>
    <editorTabColorProvider implementation="com.google.idea.blaze.cpp.syncstatus.BlazeCppSyncStatusEditorTabColorProvider"/>
    <editorTabTitleProvider implementation="com.google.idea.blaze.cpp.syncstatus.BlazeCppSyncStatusEditorTabTitleProvider"/>

    <applicationService serviceInterface="com.google.idea.blaze.cpp.CompilerVersionChecker"
                        serviceImplementation="com.google.idea.blaze.cpp.CompilerVersionCheckerImpl"/>
  </extensions>
</idea-plugin>
