mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-06 06:21:16 +07:00
allow to select a class by enter (but not space/dot) even if several same-named suggestions are present in the autopopup
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.completion;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightSettings;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.util.Consumer;
|
||||
@@ -28,8 +29,8 @@ public class ClassByNameMerger implements Consumer<LookupElement> {
|
||||
private final boolean myShouldMerge;
|
||||
private final CompletionResultSet myResult;
|
||||
|
||||
public ClassByNameMerger(boolean shouldMerge, CompletionResultSet result) {
|
||||
myShouldMerge = shouldMerge;
|
||||
public ClassByNameMerger(CompletionParameters parameters, CompletionResultSet result) {
|
||||
myShouldMerge = parameters.getInvocationCount() == 0 && CodeInsightSettings.getInstance().SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS;
|
||||
myResult = result;
|
||||
}
|
||||
|
||||
|
||||
@@ -154,7 +154,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
}
|
||||
|
||||
private static void suggestNonImportedClasses(CompletionParameters parameters, CompletionResultSet result) {
|
||||
final ClassByNameMerger merger = new ClassByNameMerger(parameters.getInvocationCount() == 0, result);
|
||||
final ClassByNameMerger merger = new ClassByNameMerger(parameters, result);
|
||||
|
||||
JavaClassNameCompletionContributor.addAllClasses(parameters,
|
||||
true, result.getPrefixMatcher(), new Consumer<LookupElement>() {
|
||||
|
||||
+20
-3
@@ -1119,18 +1119,35 @@ class Foo {{
|
||||
assert end == myFixture.editor.caretModel.logicalPosition
|
||||
}
|
||||
|
||||
public void testNonImportedClass() {
|
||||
public void "test two non-imported classes when space selects first autopopup item"() {
|
||||
myFixture.addClass("package foo; public class Abcdefg {}")
|
||||
myFixture.configureByText 'a.java', 'class Foo extends <caret>'
|
||||
type 'Abcde '
|
||||
myFixture.checkResult 'import foo.Abcdefg;\n\nclass Foo extends Abcdefg <caret>'
|
||||
}
|
||||
|
||||
public void testTwoNonImportedClasses() {
|
||||
public void "test two non-imported classes when space does not select first autopopup item"() {
|
||||
CodeInsightSettings.instance.SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS = false
|
||||
|
||||
myFixture.addClass("package foo; public class Abcdefg {}")
|
||||
myFixture.addClass("package bar; public class Abcdefg {}")
|
||||
myFixture.configureByText 'a.java', 'class Foo extends <caret>'
|
||||
type 'Abcde '
|
||||
type 'Abcde'
|
||||
assert lookup.items.size() == 2
|
||||
edt { myFixture.performEditorAction(IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN) }
|
||||
type ' '
|
||||
myFixture.checkResult '''import bar.Abcdefg;
|
||||
|
||||
class Foo extends Abcdefg <caret>'''
|
||||
}
|
||||
|
||||
public void testTwoNonImportedClasses_() {
|
||||
myFixture.addClass("package foo; public class Abcdefg {}")
|
||||
myFixture.addClass("package bar; public class Abcdefg {}")
|
||||
myFixture.configureByText 'a.java', 'class Foo extends <caret>'
|
||||
type 'Abcde'
|
||||
assert lookup.items.size() == 1
|
||||
type ' '
|
||||
myFixture.checkResult 'class Foo extends Abcdefg <caret>'
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class GroovyNoVariantsDelegator extends CompletionContributor {
|
||||
}
|
||||
|
||||
private static void suggestNonImportedClasses(CompletionParameters parameters, CompletionResultSet result) {
|
||||
final ClassByNameMerger merger = new ClassByNameMerger(parameters.getInvocationCount() == 0, result);
|
||||
final ClassByNameMerger merger = new ClassByNameMerger(parameters, result);
|
||||
|
||||
GroovyCompletionContributor.addAllClasses(parameters, new Consumer<LookupElement>() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user