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 07c24a6bde56..2385d0219070 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 @@ -378,7 +378,7 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable final Pair,Iterable>> snapshot = myModel.getModelSnapshot(); - final List items = matchingItems(snapshot); + final LinkedHashSet items = matchingItems(snapshot); checkMinPrefixLengthChanges(items); @@ -389,7 +389,10 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable LinkedHashSet model = new LinkedHashSet(); model.addAll(getPrefixItems(items, true)); model.addAll(getPrefixItems(items, false)); + + myFrozenItems.retainAll(items); model.addAll(myFrozenItems); + addMostRelevantItems(model, snapshot.second); if (hasPreselected) { model.add(myPreselectedItem); @@ -431,8 +434,8 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable } } - private List matchingItems(Pair, Iterable>> snapshot) { - final List items = new ArrayList(); + private LinkedHashSet matchingItems(Pair, Iterable>> snapshot) { + final LinkedHashSet items = new LinkedHashSet(); for (LookupElement element : snapshot.first) { if (prefixMatches(element)) { items.add(element);