mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
(IDEA-327207) Settings Transfer: add an extension point for the third-party plugin import
GitOrigin-RevId: 3ee19367f23cc513c27dc7c80dd75b268855161e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
88e848a924
commit
f9169b0c66
@@ -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<ThirdPartyPluginMapping> = 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<String> {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -536,5 +536,10 @@
|
||||
<extensionPoint name="uiDslRendererProvider" interface="com.intellij.ui.dsl.listCellRenderer.UiDslRendererProvider" dynamic="true"/>
|
||||
|
||||
<extensionPoint name="notificationRouter" interface="com.intellij.notification.NotificationRouter" dynamic="true"/>
|
||||
|
||||
<!-- Settings Transfer -->
|
||||
<extensionPoint name="transferSettings.pluginMapping"
|
||||
interface="com.intellij.ide.customize.transferSettings.providers.vscode.mappings.ThirdPartyPluginMapping"
|
||||
dynamic="true" />
|
||||
</extensionPoints>
|
||||
</idea-plugin>
|
||||
|
||||
@@ -1710,10 +1710,6 @@
|
||||
defaultValue="false"
|
||||
description="Import only projects that contain cargo.toml file"
|
||||
/>
|
||||
<registryKey key="transferSettings.vscode.showRust"
|
||||
defaultValue="false"
|
||||
description="Suggest rust"
|
||||
/>
|
||||
|
||||
<toolbarQuickAction implementationClass="com.intellij.openapi.wm.impl.headertoolbar.BuildQuickAction"
|
||||
listGroupID="MainToolbarQuickActions.Run"/>
|
||||
@@ -1727,6 +1723,10 @@
|
||||
<ideEventQueueDispatcher implementation="com.intellij.ide.ui.laf.LaFMnemonicDispatcher"/>
|
||||
|
||||
<registryKey key="code.toolbar.debugger.actions" defaultValue="true" description="Add debugger actions into floating toolbar."/>
|
||||
|
||||
<!-- Settings Transfer -->
|
||||
<transferSettings.pluginMapping id="MainPluginMapping"
|
||||
implementation="com.intellij.ide.customize.transferSettings.providers.vscode.mappings.MainPluginMapping" />
|
||||
</extensions>
|
||||
|
||||
<applicationListeners>
|
||||
|
||||
Reference in New Issue
Block a user