Group (Condition<? super AnAction> filtered) { Group pluginsGroup = new Group(KeyMapBundle.message("plugins.group.title"), null); ActionManagerEx actionManager = ActionManagerEx.getInstanceEx(); JBIterable<IdeaPluginDescriptor> plugins = JBIterable.of(PluginManagerCore.getPlugins()) .sort(Comparator.comparing(IdeaPluginDescriptor::getName)); Map<PluginId, String> pluginNames = plugins.toMap(PluginDescriptor::getPluginId, PluginDescriptor::getName); List<PluginId> pluginsIds = plugins.map(PluginDescriptor::getPluginId) .append(JBIterable.from(PluginId.getRegisteredIds()).sort(PluginId::compareTo)) .unique().toList(); for (PluginId pluginId : pluginsIds) { if (PluginManagerCore.CORE_ID.equals(pluginId) || ContainerUtil.exists(KeymapExtension.EXTENSION_POINT_NAME.getExtensionList(), e -> e.skipPluginGroup(pluginId))) { continue; } String[] pluginActions = actionManager.getPluginActions(pluginId); if (pluginActions.length == 0) { continue; } //noinspection HardCodedStringLiteral String name = StringUtil.notNullize(pluginNames.get(pluginId), pluginId.getIdString()); Group pluginGroup = createPluginActionsGroup(name, pluginActions, filtered); if (pluginGroup.getSize() > 0) { pluginsGroup.addGroup(pluginGroup); } } return pluginsGroup; }