ctrl+enter chooses the selected lookup item, even in unfocused

This commit is contained in:
peter
2011-07-12 18:10:10 +02:00
parent 5945de3d63
commit b08ab89857
6 changed files with 33 additions and 8 deletions
@@ -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()) {
@@ -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));
}
}
@@ -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";
@@ -650,6 +650,9 @@
<action id="EditorChooseLookupItem">
<keyboard-shortcut first-keystroke="ENTER"/>
</action>
<action id="EditorChooseLookupItemAlways">
<keyboard-shortcut first-keystroke="control ENTER"/>
</action>
<action id="Inline">
<keyboard-shortcut first-keystroke="control alt N"/>
</action>
@@ -2,7 +2,8 @@
<actions>
<group id="LookupActions">
<!-- these must be declared before standard EnterAction and TabAction -->
<action id="EditorChooseLookupItem" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction"/>
<action id="EditorChooseLookupItem" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction$FocusedOnly"/>
<action id="EditorChooseLookupItemAlways" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction$Always"/>
<action id="EditorChooseLookupItemReplace" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemReplaceAction"/>
<action id="EditorChooseLookupItemCompleteStatement" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemCompleteStatementAction"/>
+2 -1
View File
@@ -2,7 +2,8 @@
<actions>
<group id="LookupActions">
<!-- these must be declared before standard EnterAction and TabAction -->
<action id="EditorChooseLookupItem" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction"/>
<action id="EditorChooseLookupItem" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction$FocusedOnly"/>
<action id="EditorChooseLookupItemAlways" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemAction$Always"/>
<action id="EditorChooseLookupItemReplace" class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemReplaceAction"/>
<action id="EditorChooseLookupItemCompleteStatement"
class="com.intellij.codeInsight.lookup.impl.actions.ChooseItemCompleteStatementAction"/>