diff --git a/platform/platform-api/resources/messages/IdeBundle.properties b/platform/platform-api/resources/messages/IdeBundle.properties index 6440e4e1e1e5..2e524e7e40b2 100644 --- a/platform/platform-api/resources/messages/IdeBundle.properties +++ b/platform/platform-api/resources/messages/IdeBundle.properties @@ -1619,6 +1619,7 @@ plugins.advertiser.missing.features={0,choice,1#Plugin|2#Plugins} {3} supporting plugins.advertiser.missing.feature.dependency=Suggested {0,choice,1#plugin|2#plugins} {2} available for dependency ''{1}''. plugins.advertiser.missing.features.dependency=Suggested {0,choice,1#plugin|2#plugins} {2} available for dependencies ({1}). plugins.advertiser.feature.dependency=dependency +plugins.advertiser.enabled.on.demand={0,choice,1#Plugin|2#Plugins} {1} {0,choice,1#has|2#have} been enabled. do.not.ask.me.again=Don't ask again diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt index 1348312f352a..7c5b13df8cc7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt @@ -82,7 +82,7 @@ open class PluginAdvertiserService { val descriptorsById = PluginManagerCore.buildPluginIdMap() val pluginManagerFilter = PluginManagerFilters.getInstance() - val disabledDescriptors = plugins.asSequence() + val notLoadedDescriptors = plugins.asSequence() .map { it.pluginId } .mapNotNull { descriptorsById[it] } .filterNot { it.isEnabled } @@ -103,7 +103,7 @@ open class PluginAdvertiserService { project = project, bundledPlugins = getBundledPluginToInstall(plugins, descriptorsById), suggestionPlugins = suggestToInstall, - disabledDescriptors = disabledDescriptors, + notLoadedDescriptors = notLoadedDescriptors, customPlugins = customPlugins, featuresMap = featuresMap, allUnknownFeatures = unknownFeatures, @@ -142,13 +142,30 @@ open class PluginAdvertiserService { project: Project, bundledPlugins: List, suggestionPlugins: List, - disabledDescriptors: List, + notLoadedDescriptors: List, customPlugins: List, featuresMap: MultiMap, allUnknownFeatures: Collection, dependencies: PluginFeatureMap?, includeIgnored: Boolean, ) = Runnable { + val (onDemandDescriptors, disabledDescriptors) = notLoadedDescriptors.partition { it.isOnDemand } + if (onDemandDescriptors.isNotEmpty()) { + ApplicationManager.getApplication().invokeLater { + PluginBooleanOptionDescriptor.togglePluginState(onDemandDescriptors, true) + + val message = IdeBundle.message( + "plugins.advertiser.enabled.on.demand", + onDemandDescriptors.size, + onDemandDescriptors.map { it.name }, + ) + + notificationGroup.createNotification(message, NotificationType.INFORMATION) + .setDisplayId("advertiser.enable.on.demand") + .notify(project) + } + } + val (notificationMessage, notificationActions) = if (suggestionPlugins.isNotEmpty() || disabledDescriptors.isNotEmpty()) { val action = if (disabledDescriptors.isEmpty()) { NotificationAction.createSimpleExpiring(IdeBundle.message("plugins.advertiser.action.configure.plugins")) {