mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-83302 Click To Sort variants alphabetically for packages names
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
class Goo {
|
||||
{
|
||||
new Foox<caret>
|
||||
}
|
||||
|
||||
}
|
||||
+2
@@ -8,6 +8,7 @@ import com.intellij.codeInsight.completion.impl.CompletionServiceImpl;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupManager;
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl;
|
||||
import com.intellij.ide.ui.UISettings;
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
@@ -26,6 +27,7 @@ public abstract class CompletionSortingTestCase extends LightFixtureCompletionTe
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
LookupManager.getInstance(getProject()).hideActiveLookup();
|
||||
UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = false;
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
|
||||
+21
-17
@@ -12,6 +12,7 @@ import com.intellij.codeInsight.lookup.impl.LookupImpl
|
||||
import com.intellij.ide.ui.UISettings
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation
|
||||
|
||||
public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
private static final String BASE_PATH = "/codeInsight/completion/normalSorting";
|
||||
@@ -251,29 +252,32 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase {
|
||||
public void testPreselectMostRelevantInTheMiddleAlpha() {
|
||||
UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = true;
|
||||
|
||||
try {
|
||||
myFixture.addClass("package foo; public class Elaaaaaaaaaaaaaaaaaaaa {}");
|
||||
invokeCompletion(getTestName(false) + ".java");
|
||||
myFixture.completeBasic();
|
||||
LookupImpl lookup = getLookup();
|
||||
assertPreferredItems(lookup.getList().getSelectedIndex());
|
||||
assertEquals("Elaaaaaaaaaaaaaaaaaaaa", lookup.getItems().get(0).getLookupString());
|
||||
assertEquals("ELEMENT_A", lookup.getCurrentItem().getLookupString());
|
||||
}
|
||||
finally {
|
||||
UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = false;
|
||||
}
|
||||
myFixture.addClass("package foo; public class Elaaaaaaaaaaaaaaaaaaaa {}");
|
||||
invokeCompletion(getTestName(false) + ".java");
|
||||
myFixture.completeBasic();
|
||||
LookupImpl lookup = getLookup();
|
||||
assertPreferredItems(lookup.getList().getSelectedIndex());
|
||||
assertEquals("Elaaaaaaaaaaaaaaaaaaaa", lookup.getItems().get(0).getLookupString());
|
||||
assertEquals("ELEMENT_A", lookup.getCurrentItem().getLookupString());
|
||||
}
|
||||
|
||||
public void testReallyAlphaSorting() {
|
||||
UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = true;
|
||||
|
||||
try {
|
||||
invokeCompletion(getTestName(false) + ".java");
|
||||
assert myFixture.lookupElementStrings.sort() == myFixture.lookupElementStrings
|
||||
invokeCompletion(getTestName(false) + ".java");
|
||||
assert myFixture.lookupElementStrings.sort() == myFixture.lookupElementStrings
|
||||
}
|
||||
|
||||
public void testAlphaSortPackages() {
|
||||
UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = true
|
||||
|
||||
def pkgs = ['bar', 'foo', 'goo', 'roo', 'zoo']
|
||||
for (s in pkgs) {
|
||||
myFixture.addClass("package $s; public class Foox {}")
|
||||
}
|
||||
finally {
|
||||
UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = false;
|
||||
invokeCompletion(getTestName(false) + ".java")
|
||||
for (i in 0..<pkgs.size()) {
|
||||
assert LookupElementPresentation.renderElement(myFixture.lookupElements[i]).tailText?.contains(pkgs[i])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-6
@@ -139,6 +139,11 @@ public class CompletionLookupArranger extends LookupArranger {
|
||||
List<LookupElement> items = matchingItems(lookup);
|
||||
Collections.sort(items, new Comparator<LookupElement>() {
|
||||
public int compare(LookupElement o1, LookupElement o2) {
|
||||
if (isAlphaSorted()) {
|
||||
String invariant = PRESENTATION_INVARIANT.get(o1);
|
||||
assert invariant != null;
|
||||
return invariant.compareToIgnoreCase(PRESENTATION_INVARIANT.get(o2));
|
||||
}
|
||||
//noinspection unchecked
|
||||
return mySortingWeights.get(o1).compareTo(mySortingWeights.get(o2));
|
||||
}
|
||||
@@ -175,12 +180,6 @@ public class CompletionLookupArranger extends LookupArranger {
|
||||
}
|
||||
|
||||
if (isAlphaSorted()) {
|
||||
Collections.sort(items, new Comparator<LookupElement>() {
|
||||
@Override
|
||||
public int compare(LookupElement o1, LookupElement o2) {
|
||||
return o1.getLookupString().compareToIgnoreCase(o2.getLookupString());
|
||||
}
|
||||
});
|
||||
model.addAll(items);
|
||||
} else {
|
||||
model.addAll(byRelevance);
|
||||
|
||||
Reference in New Issue
Block a user