diff --git a/platform/platform-resources/src/keymaps/$default.xml b/platform/platform-resources/src/keymaps/$default.xml
index f063c30a3640..dfb620376cac 100644
--- a/platform/platform-resources/src/keymaps/$default.xml
+++ b/platform/platform-resources/src/keymaps/$default.xml
@@ -66,9 +66,6 @@
-
-
-
diff --git a/platform/platform-resources/src/keymaps/Eclipse (Mac OS X).xml b/platform/platform-resources/src/keymaps/Eclipse (Mac OS X).xml
index 951104a1472c..14e03c10faa3 100644
--- a/platform/platform-resources/src/keymaps/Eclipse (Mac OS X).xml
+++ b/platform/platform-resources/src/keymaps/Eclipse (Mac OS X).xml
@@ -156,23 +156,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/platform/platform-resources/src/keymaps/Eclipse.xml b/platform/platform-resources/src/keymaps/Eclipse.xml
index af4736758255..31fe87e28d2b 100644
--- a/platform/platform-resources/src/keymaps/Eclipse.xml
+++ b/platform/platform-resources/src/keymaps/Eclipse.xml
@@ -182,24 +182,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/platform/platform-resources/src/keymaps/ReSharper OSX.xml b/platform/platform-resources/src/keymaps/ReSharper OSX.xml
index b0b133a1115c..32a3b53153cd 100755
--- a/platform/platform-resources/src/keymaps/ReSharper OSX.xml
+++ b/platform/platform-resources/src/keymaps/ReSharper OSX.xml
@@ -153,15 +153,9 @@
-
-
-
-
-
-
diff --git a/platform/platform-resources/src/keymaps/ReSharper.xml b/platform/platform-resources/src/keymaps/ReSharper.xml
index c312635b7124..30202103e329 100755
--- a/platform/platform-resources/src/keymaps/ReSharper.xml
+++ b/platform/platform-resources/src/keymaps/ReSharper.xml
@@ -72,12 +72,6 @@
-
-
-
-
-
-
diff --git a/platform/platform-resources/src/keymaps/Visual Studio.xml b/platform/platform-resources/src/keymaps/Visual Studio.xml
index b01297221813..e9c52f1c7d67 100644
--- a/platform/platform-resources/src/keymaps/Visual Studio.xml
+++ b/platform/platform-resources/src/keymaps/Visual Studio.xml
@@ -97,9 +97,6 @@
-
-
-
diff --git a/platform/platform-resources/src/keymaps/Xcode.xml b/platform/platform-resources/src/keymaps/Xcode.xml
index 1a3f983cbc06..acd99e25a1f7 100644
--- a/platform/platform-resources/src/keymaps/Xcode.xml
+++ b/platform/platform-resources/src/keymaps/Xcode.xml
@@ -65,12 +65,6 @@
-
-
-
-
-
-
@@ -355,9 +349,6 @@
-
-
-
@@ -443,7 +434,6 @@
-
diff --git a/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCase.java b/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCase.java
index 82825f0a70c9..f2d080a7de4c 100644
--- a/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCase.java
+++ b/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCase.java
@@ -34,6 +34,11 @@ public abstract class KeymapsTestCase extends KeymapsTestCaseBase {
result.addAll(UNCNOWN_ACTION_IDS);
}
+ @Override
+ protected Set getBoundActions() {
+ return DEFAULT_BOUND_ACTIONS;
+ }
+
// @formatter:off
@NonNls @SuppressWarnings({"HardCodedStringLiteral"})
private static final Map DEFAULT_DUPLICATES = new THashMap(){{
@@ -361,4 +366,8 @@ public abstract class KeymapsTestCase extends KeymapsTestCaseBase {
"IDEtalk.SearchUserHistory", "IDEtalk.SearchUserHistory", "IDEtalk.Rename",
""
);
+
+ @NonNls protected static final Set DEFAULT_BOUND_ACTIONS = ContainerUtil.set(
+ "EditorDelete"
+ );
}
diff --git a/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCaseBase.java b/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCaseBase.java
index 230a6423ef88..710cb7f70824 100644
--- a/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCaseBase.java
+++ b/platform/testFramework/extensions/src/com/intellij/keymap/KeymapsTestCaseBase.java
@@ -53,6 +53,8 @@ public abstract class KeymapsTestCaseBase extends PlatformTestCase {
protected abstract void collectUnknownActions(Set result);
+ protected abstract Set getBoundActions();
+
protected static void appendKnownDuplicates(Map>> result, Map duplicates) {
for (Map.Entry eachKeymap : duplicates.entrySet()) {
String keymapName = eachKeymap.getKey();
@@ -398,4 +400,42 @@ public abstract class KeymapsTestCaseBase extends PlatformTestCase {
}
}
}
+
+
+ public void testBoundActions() {
+ StringBuilder failMessage = new StringBuilder();
+
+ Set knownBoundActions = getBoundActions();
+
+ Keymap[] keymaps = KeymapManagerEx.getInstanceEx().getAllKeymaps();
+ for (Keymap keymap : keymaps) {
+ KeymapImpl keymapImpl = (KeymapImpl)keymap;
+ List unboundActionsWithShortcut = new ArrayList<>();
+
+ for (String actionId : keymapImpl.getActionIds()) {
+ if (knownBoundActions.contains(actionId)) continue;
+
+ Shortcut[] ownShortcuts = keymapImpl.getOwnShortcuts(actionId);
+ boolean isBound = keymapImpl.isActionBound(actionId);
+
+ if (isBound && ownShortcuts != null) {
+ unboundActionsWithShortcut.add(actionId);
+ }
+ }
+
+ if (!unboundActionsWithShortcut.isEmpty()) {
+ failMessage.append(String.format("Shortcut for bound action found in keymap '%s':\n", keymap));
+ for (String action : unboundActionsWithShortcut) {
+ failMessage.append(" \"").append(action).append("\"\n");
+ }
+ failMessage.append("\n");
+ }
+ }
+
+ if (failMessage.length() > 0) {
+ TestCase.fail(failMessage +
+ "\n" +
+ "Please remove these actions from keymaps, or add to the 'known bound actions' list");
+ }
+ }
}
diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml
index 0a9834dce234..294dbed39df0 100644
--- a/plugins/groovy/src/META-INF/plugin.xml
+++ b/plugins/groovy/src/META-INF/plugin.xml
@@ -1651,9 +1651,7 @@
-
-
+ description="Execute Groovy code in console"/>