diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java
index 80c18ce16e3d..359b4ea5a4d1 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java
@@ -160,7 +160,7 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement
myLookup.setFocused(true);
} else {
myLookup.addAdvertisement("Press " +
- CompletionContributor.getActionShortcut(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM_REPLACE) +
+ CompletionContributor.getActionShortcut(IdeActions.ACTION_CHOOSE_LOOKUP_ITEM_ALWAYS) +
" to choose the first suggestion");
}
if (!myEditor.isOneLineMode()) {
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java
index 44ab57a49cd5..bf893de19811 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java
@@ -26,9 +26,9 @@ import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
-public class ChooseItemAction extends EditorAction {
- public ChooseItemAction(){
- super(new Handler());
+public abstract class ChooseItemAction extends EditorAction {
+ public ChooseItemAction(Handler handler){
+ super(handler);
}
@NotNull
@@ -41,7 +41,13 @@ public class ChooseItemAction extends EditorAction {
return lookup;
}
- private static class Handler extends EditorActionHandler {
+ protected static class Handler extends EditorActionHandler {
+ final boolean focusedOnly;
+
+ Handler(boolean focusedOnly) {
+ this.focusedOnly = focusedOnly;
+ }
+
public void execute(@NotNull final Editor editor, final DataContext dataContext) {
getLookup(editor).finishLookup(Lookup.NORMAL_SELECT_CHAR);
}
@@ -50,7 +56,20 @@ public class ChooseItemAction extends EditorAction {
@Override
public boolean isEnabled(Editor editor, DataContext dataContext) {
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
- return lookup != null && lookup.isFocused();
+ if (lookup == null) return false;
+ if (focusedOnly && !lookup.isFocused()) return false;
+ return true;
+ }
+ }
+
+ public static class Always extends ChooseItemAction {
+ public Always() {
+ super(new Handler(false));
+ }
+ }
+ public static class FocusedOnly extends ChooseItemAction {
+ public FocusedOnly() {
+ super(new Handler(true));
}
}
diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java
index d4ca80de5b1a..2ed2e4ab668d 100644
--- a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java
+++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java
@@ -69,6 +69,7 @@ public interface IdeActions {
@NonNls String ACTION_SMART_TYPE_COMPLETION = "SmartTypeCompletion";
@NonNls String ACTION_CLASS_NAME_COMPLETION = "ClassNameCompletion";
@NonNls String ACTION_CHOOSE_LOOKUP_ITEM = "EditorChooseLookupItem";
+ @NonNls String ACTION_CHOOSE_LOOKUP_ITEM_ALWAYS = "EditorChooseLookupItemAlways";
@NonNls String ACTION_CHOOSE_LOOKUP_ITEM_REPLACE = "EditorChooseLookupItemReplace";
@NonNls String ACTION_CHOOSE_LOOKUP_ITEM_COMPLETE_STATEMENT = "EditorChooseLookupItemCompleteStatement";
diff --git a/platform/platform-resources/src/idea/Keymap_Default.xml b/platform/platform-resources/src/idea/Keymap_Default.xml
index 6eec61b2a34f..91379ea5a786 100644
--- a/platform/platform-resources/src/idea/Keymap_Default.xml
+++ b/platform/platform-resources/src/idea/Keymap_Default.xml
@@ -650,6 +650,9 @@
+
+
+
diff --git a/platform/platform-resources/src/idea/PlatformLangActionManager.xml b/platform/platform-resources/src/idea/PlatformLangActionManager.xml
index cba333e3e675..103689de74f7 100644
--- a/platform/platform-resources/src/idea/PlatformLangActionManager.xml
+++ b/platform/platform-resources/src/idea/PlatformLangActionManager.xml
@@ -2,7 +2,8 @@
-
+
+
diff --git a/resources/src/idea/RichPlatformActions.xml b/resources/src/idea/RichPlatformActions.xml
index bde133ac2d14..755ad7f94061 100644
--- a/resources/src/idea/RichPlatformActions.xml
+++ b/resources/src/idea/RichPlatformActions.xml
@@ -2,7 +2,8 @@
-
+
+