<!--
  ~ Copyright (C) 2024 The Android Open Source Project
  ~
  ~ 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 xmlns:xi="http://www.w3.org/2001/XInclude">
  <name>Gradle Declarative Support</name>
  <id>com.android.tools.gradle.dcl</id>
  <description>
    <![CDATA[
    Support Gradle Declarative Projects with DCL language
    ]]>
  </description>
  <version>0.1</version>
  <vendor>Google</vendor>
  <depends>com.intellij.java</depends>
  <depends>com.intellij.gradle</depends>
  <depends>org.jetbrains.kotlin</depends>
  <depends>org.jetbrains.plugins.gradle</depends>
  <idea-version since-build="242"/>
  <!-- This is temporary mechanism to mark certain plugins as K2-compatible. See IntelliJ commit cf213fb139 for details. -->
  <extensions defaultExtensionNs="org.jetbrains.kotlin">
    <!--suppress PluginXmlValidity -->
    <supportsKotlinPluginMode supportsK2="true"/>
  </extensions>

  <extensions defaultExtensionNs="com.intellij">
    <lang.syntaxHighlighter language="Declarative" implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeHighlighter"/>
    <lang.quoteHandler language="Declarative" implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeQuoteHandler"/>
    <lang.braceMatcher language="Declarative" implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativePairedBraceMatcher"/>
    <todoIndexer filetype="Declarative" implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeTodoIndexer"/>
    <indexPatternBuilder implementation="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeTodoIndexPatternBuilder"/>
    <lang.formatter
        language="Declarative"
        implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.formatting.DeclarativeFormattingModelBuilder"/>
    <langCodeStyleSettingsProvider
        implementation="com.android.tools.idea.gradle.dcl.lang.ide.formatting.settings.DeclarativeLanguageCodeStyleSettingsProvider"/>
    <completion.contributor language="Declarative"
                            implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeCompletionContributor" />
    <completion.confidence language="Declarative"
                           id="EnableAutoPopupInDeclarativeCompletion"
                           implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.EnableAutoPopupInDeclarativeCompletion" />
    <annotator language="Declarative" implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeAnnotator"/>

    <psi.referenceContributor language="Declarative" implementation="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeVersionCatalogReferenceContributor"/>
    <lang.commenter language="Declarative" implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeCommenter"/>
    <lang.foldingBuilder language="Declarative" implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeFoldingBuilder"/>
    <colorSettingsPage implementation="com.android.tools.idea.gradle.dcl.lang.ide.color.DeclarativeColorSettingsPage"/>
    <localInspection language="Declarative"
                     bundle="messages.DeclarativeBundle"
                     groupKey="inspection.group.dcl"
                     key="inspection.declarative.unresolved.reference.display.name"
                     enabledByDefault="true" level="WARNING"
                     implementationClass="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeUnresolvedReferenceInspection"/>

    <applicationService
        serviceInterface="com.android.tools.idea.gradle.dcl.lang.psi.DeclarativeIconProviderService"
        serviceImplementation="com.android.tools.idea.gradle.dcl.lang.ide.DeclarativeIdeIconProviderService"/>
  </extensions>
  <extensions defaultExtensionNs="org.jetbrains.plugins.gradle">
    <autoReloadSettingsCollector implementation="com.android.tools.idea.gradle.dcl.lang.ide.GradleDeclarativeScriptCollector"/>
  </extensions>
  <xi:include href="/META-INF/gradle-declarative-lang.xml"/>
  <xi:include href="/META-INF/gradle-declarative-flags.xml"/>
  <xi:include href="/META-INF/gradle-declarative-sync.xml"/>
</idea-plugin>
