<!--
  ~ 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"/>
  </extensions>
</idea-plugin>
