<!--
  ~ 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"/>
    <RunConfigurationFactory implementation="com.google.idea.blaze.python.run.BlazePyDebuggableRunConfigurationFactory"/>
    <BlazeTestEventsHandler implementation="com.google.idea.blaze.python.run.smrunner.BlazePythonTestEventsHandler"/>
  </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"/>
  </extensionPoints>

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

</idea-plugin>
