diff --git a/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/mappings/PluginsMappings.kt b/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/mappings/PluginsMappings.kt index fff66faadb84..63bcf1aec1dd 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/mappings/PluginsMappings.kt +++ b/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/mappings/PluginsMappings.kt @@ -1,86 +1,106 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ide.customize.transferSettings.providers.vscode.mappings +import com.intellij.ide.customize.transferSettings.TransferableIdeId import com.intellij.ide.customize.transferSettings.db.KnownPlugins import com.intellij.ide.customize.transferSettings.models.FeatureInfo -import com.intellij.openapi.util.registry.Registry +import com.intellij.openapi.extensions.ExtensionPointName -object PluginsMappings { - private val theMap = mapOf( - // Plugins - "emilast.logfilehighlighter" to KnownPlugins.Ideolog, - "xinyayang0506.log-analysis" to KnownPlugins.Ideolog, - "vscodevim.vim" to KnownPlugins.IdeaVim, - "msveden.teamcity-checker" to KnownPlugins.TeamCity, +/** + * Allows to register plugins of third-party products for importing. + */ +interface ThirdPartyPluginMapping { - // Features - "donjayamanne.githistory" to KnownPlugins.Git, - "eamodio.gitlens" to KnownPlugins.Git, - "waderyan.gitblame" to KnownPlugins.Git, - "mhutchie.git-graph" to KnownPlugins.Git, - "ritwickdey.liveserver" to KnownPlugins.WebSupport, - "ms-azuretools.vscode-docker" to KnownPlugins.Docker, - "vscjava.vscode-java-pack" to KnownPlugins.Java, - "redhat.java" to KnownPlugins.Java, - "vscjava.vscode-maven" to KnownPlugins.Maven, - "vscjava.vscode-gradle" to KnownPlugins.Gradle, - "vscjava.vscode-java-debug" to KnownPlugins.Debugger, - "donjayamanne.javadebugger" to KnownPlugins.Debugger, - "mathiasfrohlich.Kotlin" to KnownPlugins.Kotlin, - "fwcd.kotlin" to KnownPlugins.Kotlin, - "ms-vscode-remote.remote-wsl" to KnownPlugins.WindowsSubsystemLinux, - "bungcip.better-toml" to KnownPlugins.Toml, - "Vue.volar" to KnownPlugins.Vue, - //"GitHub.copilot-chat" to KnownPlugins.AiAssistant, + companion object { + val EP_NAME: ExtensionPointName = ExtensionPointName("com.intellij.transferSettings.pluginMapping") + } - // Language packs - "ms-ceintl.vscode-language-pack-zh-hans" to KnownPlugins.ChineseLanguage, - "ms-ceintl.vscode-language-pack-ja" to KnownPlugins.KoreanLanguage, - "ms-ceintl.vscode-language-pack-ko" to KnownPlugins.JapaneseLanguage, + fun mapPlugin(externalProduct: TransferableIdeId, pluginId: String): FeatureInfo? +} - // New mappings - "ms-dotnettools.csharp" to KnownPlugins.CSharp, - "jchannon.csharpextensions" to KnownPlugins.CSharp, - "ms-dotnettools.csdevkit" to KnownPlugins.CSharp, - "kreativ-software.csharpextensions" to KnownPlugins.CSharp, - "jmrog.vscode-nuget-package-manager" to KnownPlugins.NuGet, - "formulahendry.dotnet-test-explorer" to KnownPlugins.TestExplorer, - "formulahendry.dotnet" to KnownPlugins.RunConfigurations, - "unity.unity-debug" to KnownPlugins.Unity, - "tobiah.unity-tools" to KnownPlugins.Unity, - "kleber-swf.unity-code-snippets" to KnownPlugins.Unity, - "jorgeserrano.vscode-csharp-snippets" to KnownPlugins.LiveTemplates, - "fudge.auto-using" to KnownPlugins.CSharp, - "streetsidesoftware.code-spell-checker" to KnownPlugins.SpellChecker, - "k--kato.docomment" to KnownPlugins.CSharp, - "formulahendry.code-runner" to KnownPlugins.RunConfigurations, - "wayou.vscode-todo-highlight" to KnownPlugins.LanguageSupport, - "icsharpcode.ilspy-vscode" to KnownPlugins.DotNetDecompiler, - "editorconfig.editorconfig" to KnownPlugins.editorconfig, - "ms-vscode.vscode-typescript-tslint-plugin" to KnownPlugins.TSLint, - "github.vscode-pull-request-github" to KnownPlugins.Git, - "mtxr.sqltools" to KnownPlugins.DatabaseSupport, - "scala-lang.scala" to KnownPlugins.Scala, - "Dart-Code.dart-code" to KnownPlugins.Dart, - "Dart-Code.flutter" to KnownPlugins.Flutter, - "vscjava.vscode-lombok" to KnownPlugins.Lombok, - "esbenp.prettier-vscode" to KnownPlugins.Prettier, - "ms-kubernetes-tools.vscode-kubernetes-tools" to KnownPlugins.Kubernetes, - ) +@Suppress("SpellCheckingInspection") +private val mainPluginMap = mapOf( + // Plugins + "emilast.logfilehighlighter" to KnownPlugins.Ideolog, + "xinyayang0506.log-analysis" to KnownPlugins.Ideolog, + "vscodevim.vim" to KnownPlugins.IdeaVim, + "msveden.teamcity-checker" to KnownPlugins.TeamCity, - fun pluginIdMap(pluginId: String): FeatureInfo? { - if (Registry.`is`("transferSettings.vscode.showRust") && pluginId == "rust-lang.rust-analyzer") { - return KnownPlugins.Rust + // Features + "donjayamanne.githistory" to KnownPlugins.Git, + "eamodio.gitlens" to KnownPlugins.Git, + "waderyan.gitblame" to KnownPlugins.Git, + "mhutchie.git-graph" to KnownPlugins.Git, + "ritwickdey.liveserver" to KnownPlugins.WebSupport, + "ms-azuretools.vscode-docker" to KnownPlugins.Docker, + "vscjava.vscode-java-pack" to KnownPlugins.Java, + "redhat.java" to KnownPlugins.Java, + "vscjava.vscode-maven" to KnownPlugins.Maven, + "vscjava.vscode-gradle" to KnownPlugins.Gradle, + "vscjava.vscode-java-debug" to KnownPlugins.Debugger, + "donjayamanne.javadebugger" to KnownPlugins.Debugger, + "mathiasfrohlich.Kotlin" to KnownPlugins.Kotlin, + "fwcd.kotlin" to KnownPlugins.Kotlin, + "ms-vscode-remote.remote-wsl" to KnownPlugins.WindowsSubsystemLinux, + "bungcip.better-toml" to KnownPlugins.Toml, + "Vue.volar" to KnownPlugins.Vue, + //"GitHub.copilot-chat" to KnownPlugins.AiAssistant, + + // Language packs + "ms-ceintl.vscode-language-pack-zh-hans" to KnownPlugins.ChineseLanguage, + "ms-ceintl.vscode-language-pack-ja" to KnownPlugins.KoreanLanguage, + "ms-ceintl.vscode-language-pack-ko" to KnownPlugins.JapaneseLanguage, + + // New mappings + "ms-dotnettools.csharp" to KnownPlugins.CSharp, + "jchannon.csharpextensions" to KnownPlugins.CSharp, + "ms-dotnettools.csdevkit" to KnownPlugins.CSharp, + "kreativ-software.csharpextensions" to KnownPlugins.CSharp, + "jmrog.vscode-nuget-package-manager" to KnownPlugins.NuGet, + "formulahendry.dotnet-test-explorer" to KnownPlugins.TestExplorer, + "formulahendry.dotnet" to KnownPlugins.RunConfigurations, + "unity.unity-debug" to KnownPlugins.Unity, + "tobiah.unity-tools" to KnownPlugins.Unity, + "kleber-swf.unity-code-snippets" to KnownPlugins.Unity, + "jorgeserrano.vscode-csharp-snippets" to KnownPlugins.LiveTemplates, + "fudge.auto-using" to KnownPlugins.CSharp, + "streetsidesoftware.code-spell-checker" to KnownPlugins.SpellChecker, + "k--kato.docomment" to KnownPlugins.CSharp, + "formulahendry.code-runner" to KnownPlugins.RunConfigurations, + "wayou.vscode-todo-highlight" to KnownPlugins.LanguageSupport, + "icsharpcode.ilspy-vscode" to KnownPlugins.DotNetDecompiler, + "editorconfig.editorconfig" to KnownPlugins.editorconfig, + "ms-vscode.vscode-typescript-tslint-plugin" to KnownPlugins.TSLint, + "github.vscode-pull-request-github" to KnownPlugins.Git, + "mtxr.sqltools" to KnownPlugins.DatabaseSupport, + "scala-lang.scala" to KnownPlugins.Scala, + "Dart-Code.dart-code" to KnownPlugins.Dart, + "Dart-Code.flutter" to KnownPlugins.Flutter, + "vscjava.vscode-lombok" to KnownPlugins.Lombok, + "esbenp.prettier-vscode" to KnownPlugins.Prettier, + "ms-kubernetes-tools.vscode-kubernetes-tools" to KnownPlugins.Kubernetes, +) + +class MainPluginMapping : ThirdPartyPluginMapping { + + override fun mapPlugin(externalProduct: TransferableIdeId, pluginId: String): FeatureInfo? { + if (externalProduct != TransferableIdeId.VSCode) { + return null } - return theMap[pluginId] - } - fun idsList(): Collection { - return theMap.keys - } - - fun originalPluginNameOverride(pluginId: String): Nothing? = when (pluginId) { - //"emilast.logfilehighlighter" to "Log File Highlighter" - else -> null + return mainPluginMap[pluginId] + } +} + +object PluginsMappings { + + fun pluginIdMap(pluginId: String): FeatureInfo? { + + for (mapping in ThirdPartyPluginMapping.EP_NAME.extensionList) { + val feature = mapping.mapPlugin(TransferableIdeId.VSCode, pluginId) + if (feature != null) return feature + } + + return null } } diff --git a/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/parsers/PluginsParser.kt b/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/parsers/PluginsParser.kt index 03edb37cfcf0..48229df64eed 100644 --- a/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/parsers/PluginsParser.kt +++ b/platform/platform-impl/src/com/intellij/ide/customize/transferSettings/providers/vscode/parsers/PluginsParser.kt @@ -76,7 +76,7 @@ class PluginsParser(private val settings: Settings) { settings.keymap = keymapPluginId } val pluginId = PluginsMappings.pluginIdMap(foreignPluginId) ?: return - val originalPluginName = root["displayName"]?.textValue() ?: PluginsMappings.originalPluginNameOverride(foreignPluginId) + val originalPluginName = root["displayName"]?.textValue() if (originalPluginName == null && (pluginId == KnownPlugins.DummyPlugin || pluginId == KnownPlugins.DummyBuiltInFeature)) { return diff --git a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml index 4755e56a0f84..1e54d471ab19 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml @@ -536,5 +536,10 @@ + + + diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index fbf143a019ea..01109aaa16bd 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -1710,10 +1710,6 @@ defaultValue="false" description="Import only projects that contain cargo.toml file" /> - @@ -1727,6 +1723,10 @@ + + +