<!-- Plugin Configuration File. Read more: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html -->
<idea-plugin>
    <!-- Unique identifier of the plugin. It should be FQN. It cannot be changed between the plugin versions. -->
    <id>com.tabbyml.intellij-tabby</id>

    <!-- Public plugin name should be written in Title Case.
         Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-name -->
    <name>Tabby</name>

    <!-- A displayed Vendor name or Organization ID displayed on the Plugins Page. -->
    <vendor url="https://tabbyml.com">TabbyML</vendor>

    <!-- Description of the plugin displayed on the Plugin Page and IDE Plugin Manager.
         Simple HTML elements (text formatting, paragraphs, and lists) can be added inside of <![CDATA[ ]]> tag.
         Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-description -->
    <description><![CDATA[
        <h1 id="tabby-plugin-for-intellij-platform">Tabby Plugin for IntelliJ Platform</h1>
        <p>Tabby is an AI coding assistant that can suggest multi-line code or full functions in real-time.</p>
        <br/>
        <p>For more information, please check out our <a href="https://tabbyml.com/">Website</a> and <a href="https://github.com/TabbyML/tabby">GitHub</a>.
        If you encounter any problem or have any suggestion, please <a href="https://github.com/TabbyML/tabby/issues/new">open an issue</a>, or join our <a href="https://join.slack.com/t/tabbycommunity/shared_invite/zt-1xeiddizp-bciR2RtFTaJ37RBxr8VxpA">Slack community</a> for more support!</p>
        <h2 id="demo">Demo</h2>
        <p>Try our online demo <a href="https://tabby.tabbyml.com/playground/">here</a>.</p>
        <h2 id="requirements">Requirements</h2>
        Tabby plugin requires <a href="https://nodejs.org/">Node.js</a> v18+ installed. </p>
  ]]></description>

    <!-- Product and plugin compatibility requirements.
         Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
    <depends>com.intellij.modules.platform</depends>

    <!-- Extension points defined by the plugin.
         Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
    <extensions defaultExtensionNs="com.intellij">
        <projectConfigurable
                parentId="editor"
                instance="com.tabbyml.intellijtabby.settings.ApplicationConfigurable"
                id="com.tabbyml.intellijtabby.settings.ApplicationConfigurable"
                displayName="Tabby"
                nonDefaultProject="true"/>
        <editorFactoryListener implementation="com.tabbyml.intellijtabby.editor.EditorListener"/>
        <statusBarWidgetFactory id="com.tabbyml.intellijtabby.status.StatusBarWidgetFactory"
                                implementation="com.tabbyml.intellijtabby.status.StatusBarWidgetFactory"/>
        <notificationGroup id="com.tabbyml.intellijtabby.notification.info"
                           displayType="BALLOON"
                           bundle="strings"
                           key="tabby.info"/>
        <notificationGroup id="com.tabbyml.intellijtabby.notification.warning"
                           displayType="STICKY_BALLOON"
                           bundle="strings"
                           key="tabby.warning"/>
    </extensions>

    <actions>
        <group id="Tabby.ToolsMenu" popup="true" text="Tabby" description="Tabby AI code assistant">
            <add-to-group group-id="CodeMenu" anchor="after" relative-to-action="CodeCompletionGroup"/>
            <action id="Tabby.TriggerCompletion"
                    class="com.tabbyml.intellijtabby.actions.TriggerCompletion"
                    text="Show Inline Completion"
                    description="Show inline completion suggestions at the caret's position.">
                <keyboard-shortcut first-keystroke="ctrl BACK_SLASH" keymap="$default"/>
                <keyboard-shortcut first-keystroke="alt BACK_SLASH" keymap="$default"/>
            </action>
            <action id="Tabby.AcceptCompletion"
                    class="com.tabbyml.intellijtabby.actions.AcceptCompletion"
                    text="Accept Completion"
                    description="Accept the shown suggestions and insert the text.">
                <keyboard-shortcut first-keystroke="TAB" keymap="$default"/>
            </action>
            <action id="Tabby.DismissCompletion"
                    class="com.tabbyml.intellijtabby.actions.DismissCompletion"
                    text="Dismiss Completion"
                    description="Hide the shown suggestions.">
                <keyboard-shortcut first-keystroke="ESCAPE" keymap="$default"/>
            </action>
            <separator/>
            <action id="Tabby.OpenAuthPage"
                    class="com.tabbyml.intellijtabby.actions.OpenAuthPage"
                    text="Open Authorization Page..."
                    description="Open the authorization web page in your web browser.">
            </action>
            <action id="Tabby.CheckIssueDetail"
                    class="com.tabbyml.intellijtabby.actions.CheckIssueDetail"
                    text="Check Issue Detail..."
                    description="Show detail information for current issue.">
            </action>
            <action id="Tabby.ToggleInlineCompletionTriggerMode"
                    class="com.tabbyml.intellijtabby.actions.ToggleInlineCompletionTriggerMode">
            </action>
            <separator/>
            <action id="Tabby.OpenSettings"
                    class="com.tabbyml.intellijtabby.actions.OpenSettings"
                    text="Open Settings..."
                    description="Show settings for Tabby.">
            </action>
            <group id="Tabby.OpenOnlineHelp"
                   popup="true"
                   text="Open Online Help"
                   description="View useful links for online help.">
                <action id="Tabby.OpenOnlineHelp.OpenOnlineDocumentation"
                        class="com.tabbyml.intellijtabby.actions.OpenOnlineDocumentation"
                        text="Online Documentation..."
                        description="Open the documentation page in your web browser.">
                </action>
                <action id="Tabby.OpenOnlineHelp.OpenModelRegistry"
                        class="com.tabbyml.intellijtabby.actions.OpenModelRegistry"
                        text="Model Registry..."
                        description="Explore more recommend models from Tabby's model registry.">
                </action>
                <action id="Tabby.OpenOnlineHelp.JoinTabbySlackCommunity"
                        class="com.tabbyml.intellijtabby.actions.JoinTabbySlackCommunity"
                        text="Tabby Slack Community..."
                        description="Join Tabby's Slack community to get help or feed back.">
                </action>
                <action id="Tabby.OpenOnlineHelp.OpenTabbyGithubRepo"
                        class="com.tabbyml.intellijtabby.actions.OpenTabbyGithubRepo"
                        text="Tabby GitHub Repository..."
                        description="View the source code for Tabby, and open issues.">
                </action>
            </group>
        </group>
    </actions>
</idea-plugin>