<!--
  ~ Copyright 2003-2021 JetBrains s.r.o.
  ~
  ~ 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">
  <id>jetbrains.mps.idea.vcs</id>
  <name>MPS Version Control Support</name>
  <category>Custom Languages</category>
  <description>Provides support for Version Control in MPS models</description>
  <version>2025.1</version>
  <vendor url="http://www.jetbrains.com/mps/">JetBrains</vendor>
  <idea-version since-build="251.1" until-build="252.1"/>
  <depends>jetbrains.mps.core</depends>

  <depends optional="true">Subversion</depends>
  <depends optional="true" config-file="MPSVcsGit.xml">Git4Idea</depends>

  <xi:include href="MPSVcs.xml"/>

  <extensions defaultExtensionNs="com.intellij">
    <diff.DiffTool implementation="jetbrains.mps.vcs.platform.integration.ModelDiffTool"/>
    <diff.merge.MergeTool implementation="jetbrains.mps.vcs.platform.integration.ModelMergeTool"/>
  </extensions>

  <extensions defaultExtensionNs="com.intellij">
    <mps.LanguageLibrary dir="/"/>
    <errorHandler implementation="jetbrains.mps.ide.blame.CharismaReporter"/>
    <vcs.fileStatusProvider implementation="jetbrains.mps.vcs.changesmanager.NodeFileStatusProvider"/>
    <checkinHandlerFactory implementation="jetbrains.mps.vcs.platform.integration.OptimizeImportsCheckinHandler$OptimizeImportsCheckinHandlerFactory"/>
    <mps.editorWarningsProvider implementation="jetbrains.mps.vcs.platform.integration.ConflictingModelsWarnings" />

    <applicationService serviceInterface="jetbrains.mps.vcs.platform.mergedriver.MergeDriverPacker"
                        serviceImplementation="jetbrains.mps.vcs.MergeDriverPackerImpl" />
    <applicationService serviceImplementation="jetbrains.mps.vcs.diff.ui.common.ChangeColors"/>
    <applicationService serviceImplementation="jetbrains.mps.vcs.annotate.AnnotationOptions"/>

    <projectService serviceImplementation="jetbrains.mps.vcs.changesmanager.CurrentDifferenceRegistry" />
    <projectService serviceImplementation="jetbrains.mps.vcs.changesmanager.editor.EditorHighlighterFactory"/>

    <projectService serviceImplementation="jetbrains.mps.vcs.changesmanager.NodeFileStatusMapping"/>
  </extensions>

  <applicationListeners>
    <listener class="jetbrains.mps.vcs.changesmanager.CurrentDifferenceRegistry$MyProjectListener"
              topic="com.intellij.openapi.project.ProjectManagerListener"/>
  </applicationListeners>

  <projectListeners>
    <listener class="jetbrains.mps.vcs.changesmanager.editor.EditorHighlighterFactory$MyEditorComponentCreateListener"
              topic="jetbrains.mps.nodeEditor.highlighter.EditorComponentCreateListener"
              activeInHeadlessMode="false"/>
  </projectListeners>

</idea-plugin>
