diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapManagerImpl.java index 2f6c6dfd2ec5..b9a61567620d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/KeymapManagerImpl.java @@ -24,6 +24,7 @@ import com.intellij.openapi.keymap.ex.KeymapManagerEx; import com.intellij.openapi.options.BaseSchemeProcessor; import com.intellij.openapi.options.SchemesManager; import com.intellij.openapi.options.SchemesManagerFactory; +import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; @@ -154,7 +155,13 @@ public class KeymapManagerImpl extends KeymapManagerEx implements PersistentStat @Override public String getActionBinding(String actionId) { - return myBoundShortcuts.get(actionId); + Set visited = null; + String id = actionId, next; + while ((next = myBoundShortcuts.get(id)) != null) { + if (visited == null) visited = ContainerUtil.newHashSet(); + if (!visited.add(id = next)) break; + } + return Comparing.equal(id, actionId) ? null : id; } @Override