From f8c4479cde4c833e94d419c4f7c8a80a4ebe615a Mon Sep 17 00:00:00 2001 From: Ivan Semenov Date: Wed, 14 May 2025 11:03:58 +0200 Subject: [PATCH] [platform] prevent top hit action contributor from failing on missing action GitOrigin-RevId: 69bfdee325f950215adffc5b7dc700e4aadcdb06 --- .../src/com/intellij/ide/ActionsTopHitProvider.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/ide/ActionsTopHitProvider.java b/platform/platform-api/src/com/intellij/ide/ActionsTopHitProvider.java index 3c92fcb32cbd..fc01e013ddf2 100644 --- a/platform/platform-api/src/com/intellij/ide/ActionsTopHitProvider.java +++ b/platform/platform-api/src/com/intellij/ide/ActionsTopHitProvider.java @@ -2,6 +2,8 @@ package com.intellij.ide; import com.intellij.openapi.actionSystem.ActionManager; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; @@ -13,13 +15,21 @@ import java.util.function.Consumer; * @author Konstantin Bulenkov */ public abstract class ActionsTopHitProvider implements SearchTopHitProvider { + private static final Logger LOG = Logger.getInstance(ActionsTopHitProvider.class); + @Override public void consumeTopHits(@NotNull String pattern, @NotNull Consumer collector, @Nullable Project project) { final ActionManager actionManager = ActionManager.getInstance(); for (String[] strings : getActionsMatrix()) { if (StringUtil.isBetween(pattern, strings[0], strings[1])) { for (int i = 2; i < strings.length; i++) { - collector.accept(actionManager.getAction(strings[i])); + String actionId = strings[i]; + AnAction action = actionManager.getAction(actionId); + if(action == null) { + LOG.warn("Action " + actionId + " not found"); + } else { + collector.accept(action); + } } } }