<!--
  ~ Copyright 2017 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>

  <extensions defaultExtensionNs="com.google.idea.blaze">
    <SyncPlugin implementation="com.google.idea.blaze.python.sync.BlazePythonSyncPlugin"/>
    <PrefetchFileSource implementation="com.google.idea.blaze.python.sync.PythonPrefetchFileSource"/>
    <BlazeCommandRunConfigurationHandlerProvider implementation="com.google.idea.blaze.python.run.BlazePyRunConfigurationHandlerProvider" order="first"/>
    <BlazeTestEventsHandler implementation="com.google.idea.blaze.python.run.smrunner.BlazePythonTestEventsHandler"/>
    <PyParameterizedNameConverter implementation="com.google.idea.blaze.python.run.smrunner.PyBaseParameterizedNameConverter" order="first"/>
    <BlazeIssueParserProvider implementation="com.google.idea.blaze.python.issueparser.PyIssueParserProvider"/>
  </extensions>

  <extensions defaultExtensionNs="com.intellij">
    <useScopeEnlarger implementation="com.google.idea.blaze.python.search.BlazePyUseScopeEnlarger"/>
    <runConfigurationProducer implementation="com.google.idea.blaze.python.run.producers.BlazePyBinaryConfigurationProducer" order="first"/>
    <runConfigurationProducer implementation="com.google.idea.blaze.python.run.producers.BlazePyTestConfigurationProducer" order="first"/>
    <programRunner implementation="com.google.idea.blaze.python.run.BlazePyDebugRunner"/>
    <consoleFilterProvider implementation="com.google.idea.blaze.python.run.filter.BlazePyTracebackFilter$BlazePyTracebackFilterProvider"/>
  </extensions>

  <extensionPoints>
    <extensionPoint qualifiedName="com.google.idea.blaze.BlazePyFilterProvider"
      interface="com.google.idea.blaze.python.run.filter.BlazePyFilterProvider"/>
    <extensionPoint qualifiedName="com.google.idea.blaze.BlazePyDebugFlagsProvider"
      interface="com.google.idea.blaze.python.run.BlazePyDebugHelper"/>
    <extensionPoint qualifiedName="com.google.idea.blaze.PyParameterizedNameConverter"
      interface="com.google.idea.blaze.python.run.smrunner.PyParameterizedNameConverter"/>
  </extensionPoints>

  <project-components>
    <component>
      <implementation-class>com.google.idea.blaze.python.run.producers.NonBlazeProducerSuppressor</implementation-class>
    </component>
  </project-components>

</idea-plugin>
