<idea-plugin>
    <id>org.jetbrains.ruby-runtime-stats</id>
    <name>Ruby Dynamic Code Insight</name>
    <vendor email="" url="http://www.jetbrains.com">JetBrains</vendor>
    <depends>com.intellij.modules.ruby</depends>
    <description><![CDATA[
        <p>This plugin provides additional Code Insight intelligence to improve resolution, find usages and refactoring
        capabilities.</p>

        <p>The data is obtained via user project execution altered by a special tracker which stores symbol
        hierarchy, method return types, etc.</p>
    ]]></description>

    <change-notes><![CDATA[
        <a href="https://github.com/JetBrains/ruby-type-inference/blob/master/ide-plugin/CHANGELOG.md">Changelog</a>
    ]]>
    </change-notes>

    <applicationListeners>
        <listener class="org.jetbrains.plugins.ruby.ruby.codeInsight.ProjectLifecycleListenerImpl"
                  topic="com.intellij.openapi.project.ProjectManagerListener"/>
        <listener class="org.jetbrains.plugins.ruby.ruby.codeInsight.RubyDynamicCodeInsightPluginAppLifecyctlListener"
                  topic="com.intellij.ide.AppLifecycleListener"
                  activeInHeadlessMode="true"/>
    </applicationListeners>

    <extensions defaultExtensionNs="com.intellij">
        <executor implementation="com.intellij.execution.executors.RunWithTypeTrackerExecutor"/>
        <!--<executor implementation="com.intellij.execution.executors.CollectStateExecutor"/>-->

        <programRunner implementation="org.jetbrains.plugins.ruby.ruby.codeInsight.types.RubyRunWithTypeTrackerRunner"/>
        <programRunner implementation="org.jetbrains.plugins.ruby.ruby.codeInsight.types.RubyCollectStateRunner"/>

        <projectService serviceImplementation="org.jetbrains.plugins.ruby.settings.RubyTypeContractsSettings"/>

        <intentionAction>
            <className>org.jetbrains.plugins.ruby.ruby.intentions.AddContractAnnotationIntention</className>
        </intentionAction>

        <intentionAction>
            <className>org.jetbrains.plugins.ruby.ruby.intentions.RemoveCollectedInfoIntention</className>
        </intentionAction>

        <postStartupActivity implementation="org.jetbrains.plugins.ruby.ruby.codeInsight.TrackerDataLoader"/>

        <applicationConfigurable groupId="language"
                                 groupWeight="130"
                                 instance="org.jetbrains.plugins.ruby.settings.RubyTypeContractsConfigurable"/>

    </extensions>

    <extensions defaultExtensionNs="org.jetbrains.plugins.ruby">

        <rubyTypeProvider implementation="org.jetbrains.plugins.ruby.ruby.codeInsight.types.RubyParameterTypeProvider"/>
        <symbolicTypeInferenceProvider implementation="org.jetbrains.plugins.ruby.ruby.codeInsight.types.ReturnTypeSymbolicTypeInferenceProvider"/>

        <symbolProvider implementation="org.jetbrains.plugins.ruby.ruby.codeInsight.stateTracker.ClassHierarchySymbolProvider"/>

        <runConfigurationExtension
                implementation="org.jetbrains.plugins.ruby.ruby.run.configuration.RunWithTypeTrackerRunConfigurationExtension"/>
    </extensions>

    <actions>
        <group id="ruby.contracts.group"
               text="Type Contracts"
               popup="true">
            <add-to-group group-id="RUBY_TOOLS" anchor="before" relative-to-action="BUNDLER_ACTIONS"/>
            <action class="org.jetbrains.plugins.ruby.ruby.actions.ExportContractsAction"
                    id="ruby.contracts.export"
                    text="Export type contracts"/>
            <action class="org.jetbrains.plugins.ruby.ruby.actions.ImportContractsAction"
                    id="ruby.contracts.import"
                    text="Import type contracts"/>
        </group>
        <group id="ruby.ancestors_extractor.group"
               text="Export ancestors (for rails applications only!)"
               popup="true" internal="true">
            <add-to-group group-id="RUBY_TOOLS" anchor="before" relative-to-action="BUNDLER_ACTIONS"/>
            <action class="org.jetbrains.plugins.ruby.ruby.actions.ExportAncestorsByObjectSpaceAction"
                    id="ruby.ancestors_extractor.export_by_objectspace"
                    text="Export ancestors by Ruby's objectspace"/>
            <action class="org.jetbrains.plugins.ruby.ruby.actions.ExportAncestorsByRubymineAction"
                    id="ruby.ancestors_extractor.export_by_rubymine"
                    text="Export ancestors by Rubymine"/>
            <action class="org.jetbrains.plugins.ruby.ruby.actions.ExportAncestorsDiffAction"
                    id="ruby.ancestors_extractor.diff"
                    text="Export ancestors diff"/>
        </group>
    </actions>

</idea-plugin>