diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java index cb4e49160db1..e7a9e1b5aa14 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java @@ -86,7 +86,7 @@ public class CompletionLookupArranger extends LookupArranger { CompletionLocation myLocation = new CompletionLocation(indicator.getParameters()); final StatisticsInfo main = StatisticsManager.serialize(CompletionService.STATISTICS_KEY, item, myLocation); final List items = lookupImpl.getItems(); - final int count = Math.min(lookupImpl.getPreferredItemsCount(), lookupImpl.getList().getSelectedIndex()); + final int count = Math.min(3, lookupImpl.getList().getSelectedIndex()); final List ignored = new ArrayList(); for (int i = 0; i < count; i++) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java index 85c82c2e348b..47a5c901cb7e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java @@ -149,12 +149,6 @@ public class LookupCellRenderer implements ListCellRenderer { } private Color getItemBackground(JList list, int index, boolean isSelected) { - final int preferredCount = myLookup.getPreferredItemsCount(); - final boolean isPreferred = index <= preferredCount - 1 && preferredCount < list.getModel().getSize() - 1 && LookupImpl.limitRelevance(); - - if (isPreferred) { - return isSelected ? SELECTED_BACKGROUND_COLOR : PREFERRED_BACKGROUND_COLOR; - } return isSelected ? SELECTED_BACKGROUND_COLOR : BACKGROUND_COLOR; } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java index 1ee382a684d9..d3701d44719c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java @@ -48,7 +48,6 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Trinity; -import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; @@ -100,7 +99,6 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable private final Project myProject; private final Editor myEditor; - private int myPreferredItemsCount; private String myInitialPrefix; private boolean myStableStart; @@ -258,10 +256,6 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable } } - public int getPreferredItemsCount() { - return myPreferredItemsCount; - } - public void markSelectionTouched() { if (!ApplicationManager.getApplication().isUnitTestMode()) { ApplicationManager.getApplication().assertIsDispatchThread(); @@ -428,7 +422,6 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable } } - myPreferredItemsCount = model.size(); myFrozenItems.clear(); if (myShown) { myFrozenItems.addAll(model); @@ -443,8 +436,6 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable } }); model.addAll(elements); - } else if (limitRelevance()) { - model.addAll(addRemainingItemsLexicographically(model, items)); } else { for (List group : snapshot.second) { for (LookupElement element : group) { @@ -579,16 +570,6 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable return p; } - private static List addRemainingItemsLexicographically(Set firstItems, Collection allItems) { - List model = new ArrayList(); - for (LookupElement item : allItems) { - if (!firstItems.contains(item)) { - model.add(item); - } - } - return model; - } - private void addMostRelevantItems(final Set model, final Iterable> sortedItems) { if (model.size() > MAX_PREFERRED_COUNT) return; @@ -605,10 +586,6 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable } } - public static boolean limitRelevance() { - return Registry.is("limited.relevance.sorting.in.completion"); - } - public boolean isFrozen(@NotNull LookupElement element) { return myFrozenItems.contains(element); } diff --git a/platform/lang-impl/src/com/intellij/internal/DumpLookupElementWeights.java b/platform/lang-impl/src/com/intellij/internal/DumpLookupElementWeights.java index 4d3cf46f6d04..5ccb4bdb7cb7 100644 --- a/platform/lang-impl/src/com/intellij/internal/DumpLookupElementWeights.java +++ b/platform/lang-impl/src/com/intellij/internal/DumpLookupElementWeights.java @@ -26,7 +26,9 @@ import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.util.text.StringUtil; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -50,23 +52,19 @@ public class DumpLookupElementWeights extends AnAction implements DumbAware { } public static void dumpLookupElementWeights(final LookupImpl lookup) { - final LinkedHashMap strings = lookup.getRelevanceStrings(); - - final List items = lookup.getItems(); - final int count = lookup.getPreferredItemsCount(); - - for (int i = 0; i < items.size(); i++) { - LookupElement item = items.get(i); - String weight = strings.get(item).toString(); - final String s = item.getLookupString() + (lookup.isFrozen(item) ? "\t_first_\t" : "\t") + weight; - System.out.println(s); - LOG.info(s); - if (i == count - 1) { - final String separator = "------------"; - System.out.println(separator); - LOG.info(separator); - } - } + String sb = StringUtil.join(getLookupElementWeights(lookup), "\n"); + System.out.println(sb); + LOG.info(sb); } + public static List getLookupElementWeights(LookupImpl lookup) { + final LinkedHashMap strings = lookup.getRelevanceStrings(); + List sb = new ArrayList(); + for (LookupElement item : lookup.getItems()) { + String weight = strings.get(item).toString(); + final String s = item.getLookupString() + (lookup.isFrozen(item) ? "\t_first_\t" : "\t") + weight; + sb.add(s); + } + return sb; + } } \ No newline at end of file diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index 7b27f306f17e..9f6a55986f07 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -171,8 +171,6 @@ documentation.component.editor.font=false ide.mac.useNativeClipboard=false show.all.classes.on.first.completion=false -limited.relevance.sorting.in.completion=false -limited.relevance.sorting.in.completion.description=Whether only 5 most relevant items are shown at the top of the completion list, or it's sorted by relevance completely ide.enable.toolwindow.stack=false change.signature.awesome.mode=true diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 1ffb73521134..5c5a7f2a0fae 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -49,6 +49,7 @@ import com.intellij.ide.startup.StartupManagerEx; import com.intellij.ide.startup.impl.StartupManagerImpl; import com.intellij.ide.structureView.StructureViewBuilder; import com.intellij.ide.structureView.newStructureView.StructureViewComponent; +import com.intellij.internal.DumpLookupElementWeights; import com.intellij.lang.LanguageStructureViewBuilder; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; @@ -1747,25 +1748,12 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig final LookupImpl lookup = getLookup(); assertNotNull(lookup); - final LinkedHashMap relevanceStrings = lookup.getRelevanceStrings(); - final JList list = lookup.getList(); - final List model = lookup.getItems(); - final List actual = new ArrayList(); - final int count = lookup.getPreferredItemsCount(); - for (int i = 0; i < count; i++) { - actual.add(model.get(i).getLookupString()); - } + List strings = getLookupElementStrings(); + assert strings != null; + final List actual = strings.subList(0, Math.min(expected.length, strings.size())); if (!actual.equals(Arrays.asList(expected))) { - final List strings = new ArrayList(); - for (int i = 0; i < model.size(); i++) { - final LookupElement item = model.get(i); - strings.add(item.getLookupString() + " " + relevanceStrings.get(item)); - if (i == count - 1) { - strings.add("---"); - } - } - assertOrderedEquals(strings, expected); + assertOrderedEquals(DumpLookupElementWeights.getLookupElementWeights(lookup), expected); } assertEquals(selected, list.getSelectedIndex()); }