From ee42214b9912f40810d0ac0ceaa7e863f445ec5f Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 29 Mar 2017 16:36:50 +0300 Subject: [PATCH] ui: check that bound actions do not have assigned shortcuts --- .../src/keymaps/$default.xml | 3 -- .../src/keymaps/Eclipse (Mac OS X).xml | 15 ------- .../src/keymaps/Eclipse.xml | 16 -------- .../src/keymaps/ReSharper OSX.xml | 6 --- .../src/keymaps/ReSharper.xml | 6 --- .../src/keymaps/Visual Studio.xml | 3 -- .../platform-resources/src/keymaps/Xcode.xml | 10 ----- .../com/intellij/keymap/KeymapsTestCase.java | 9 +++++ .../intellij/keymap/KeymapsTestCaseBase.java | 40 +++++++++++++++++++ plugins/groovy/src/META-INF/plugin.xml | 4 +- 10 files changed, 50 insertions(+), 62 deletions(-) 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"/>