void (@NotNull ProgressIndicator indicator) { try { List<PluginNode> marketplacePlugins = MarketplaceRequests.loadLastCompatiblePluginDescriptors(myPluginIds); myCustomPlugins = RepositoryHelper.loadPluginsFromCustomRepositories(indicator); List<IdeaPluginDescriptor> descriptors = new ArrayList<>(RepositoryHelper.mergePluginsFromRepositories(marketplacePlugins, myCustomPlugins, true)); if (myShowDialog) { MarketplaceRequests marketplace = MarketplaceRequests.getInstance(); Set<PluginId> pluginIds = ContainerUtil.map2Set(descriptors, descriptor -> descriptor.getPluginId()); for (IdeCompatibleUpdate update : MarketplaceRequests.getLastCompatiblePluginUpdate(pluginIds)) { int index = ContainerUtil.indexOf(descriptors, d -> d.getPluginId().getIdString().equals(update.getPluginId())); if (index != -1) { IdeaPluginDescriptor descriptor = descriptors.get(index); if (descriptor instanceof PluginNode node) { node.setExternalPluginId(update.getExternalPluginId()); node.setExternalUpdateId(update.getExternalUpdateId()); node.setDescription(null); PluginNode pluginNode = marketplace.loadPluginDetails(node); if (pluginNode != null) { PluginDetailsPageComponent.loadAllPluginDetails(marketplace, node, pluginNode); descriptors.set(index, pluginNode); } } } } } for (IdeaPluginDescriptor descriptor : PluginManagerCore.getPlugins()) { if (!descriptor.isEnabled() && PluginManagerCore.isCompatible(descriptor) && PluginManagementPolicy.getInstance().canInstallPlugin(descriptor)) { descriptors.add(descriptor); } } for (IdeaPluginDescriptor descriptor : descriptors) { if (myPluginIds.contains(descriptor.getPluginId())) { myPlugins.add(PluginDownloader.createDownloader(descriptor)); } } } catch (Exception e) { PluginsAdvertiser.getLog().info(e); } }