diff --git a/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java b/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java
index 074e0bd5bd8a..431560b4355e 100644
--- a/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java
+++ b/platform/platform-impl/src/com/intellij/ide/util/TipUIUtil.java
@@ -20,11 +20,14 @@ import com.intellij.openapi.actionSystem.KeyboardShortcut;
import com.intellij.openapi.actionSystem.Shortcut;
import com.intellij.openapi.application.ApplicationInfo;
import com.intellij.openapi.application.ApplicationNamesInfo;
+import com.intellij.openapi.keymap.Keymap;
import com.intellij.openapi.keymap.KeymapManager;
import com.intellij.openapi.keymap.KeymapUtil;
+import com.intellij.openapi.keymap.impl.DefaultKeymap;
import com.intellij.util.ResourceUtil;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
+import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.io.IOException;
@@ -92,16 +95,31 @@ public class TipUIUtil {
return;
}
final String actionId = text.substring(actionIdStart, actionIdEnd);
- final Shortcut[] shortcuts = KeymapManager.getInstance().getActiveKeymap().getShortcuts(actionId);
- String shortcutText = "";
- for (final Shortcut shortcut : shortcuts) {
- if (shortcut instanceof KeyboardShortcut) {
- shortcutText = KeymapUtil.getShortcutText(shortcut);
- break;
+ String shortcutText = getShortcutText(actionId, KeymapManager.getInstance().getActiveKeymap());
+ if (shortcutText == null) {
+ Keymap defKeymap = KeymapManager.getInstance().getKeymap(DefaultKeymap.getInstance().getDefaultKeymapName());
+ if (defKeymap != null) {
+ shortcutText = getShortcutText(actionId, defKeymap);
+ if (shortcutText != null) {
+ shortcutText += " in default keymap";
+ }
}
}
+ if (shortcutText == null) {
+ shortcutText = " When using Code Completion, you can accept the currently highlighted selection in the popup list
- with the &shortcut:EditorChooseLookupItemReplace; key.
Unlike accepting with the &shortcut:EditorChooseLookupItem; key, the selected name will overwrite the rest of the name to the right of the caret. This can be especially useful for replacing one method or variable name with another.