From 834679b51d965a94635e3746e350a0dbcde05f84 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 12 Jul 2011 19:33:23 +0200 Subject: [PATCH] [^yole] once a preferred (green) lookup item has been ignored for too many times, it was impossible to make it preferred again --- ...=> SmartTypeCompletionOrderingTest.groovy} | 20 ++++++++++++------- .../completion/CompletionLookupArranger.java | 11 ++++++---- 2 files changed, 20 insertions(+), 11 deletions(-) rename java/java-tests/testSrc/com/intellij/codeInsight/completion/{SmartTypeCompletionOrderingTest.java => SmartTypeCompletionOrderingTest.groovy} (94%) diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy similarity index 94% rename from java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.java rename to java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy index 9ee380698767..ee716a18cd19 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/SmartTypeCompletionOrderingTest.groovy @@ -4,14 +4,13 @@ package com.intellij.codeInsight.completion; -import com.intellij.JavaTestUtil; -import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupElementPresentation; -import com.intellij.codeInsight.lookup.impl.LookupImpl; -import com.intellij.psi.PsiClass; -import com.intellij.psi.statistics.StatisticsManager; -import java.util.List; +import com.intellij.JavaTestUtil +import com.intellij.codeInsight.lookup.LookupElement +import com.intellij.codeInsight.lookup.LookupElementPresentation +import com.intellij.codeInsight.lookup.impl.LookupImpl +import com.intellij.psi.PsiClass +import com.intellij.psi.statistics.StatisticsManager public class SmartTypeCompletionOrderingTest extends CompletionSortingTestCase { private static final String BASE_PATH = "/codeInsight/completion/smartTypeSorting"; @@ -41,6 +40,13 @@ public class SmartTypeCompletionOrderingTest extends CompletionSortingTestCase { } refreshSorting(lookup); assertPreferredItems(0, "Container", "FooBean3", "JComponent", "Frame", "Window"); + + int component = lookup.items.findIndexOf { it.lookupString == 'Component' } + for (int i = 0; i < StatisticsManager.OBLIVION_THRESHOLD; i++) { + imitateItemSelection(lookup, component); + } + refreshSorting(lookup); + assertPreferredItems(0, "Component", "Container"); } public void testMethodStats() throws Throwable { 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 3b21654516a3..019cdf8280f9 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java @@ -67,12 +67,15 @@ public class CompletionLookupArranger extends LookupArranger { final int count = Math.min(lookupImpl.getPreferredItemsCount(), lookupImpl.getList().getSelectedIndex()); for (int i = 0; i < count; i++) { final LookupElement element = items.get(i); - StatisticsInfo info = StatisticsManager.serialize(CompletionService.STATISTICS_KEY, element, myLocation); - if (info != null && info != StatisticsInfo.EMPTY && manager.getUseCount(info) == 0) { - manager.incUseCount(new StatisticsInfo(composeContextWithValue(info), item == element ? SELECTED : IGNORED)); + StatisticsInfo baseInfo = StatisticsManager.serialize(CompletionService.STATISTICS_KEY, element, myLocation); + if (baseInfo != null && baseInfo != StatisticsInfo.EMPTY && manager.getUseCount(baseInfo) == 0) { + manager.incUseCount(new StatisticsInfo(composeContextWithValue(baseInfo), IGNORED)); } } - + StatisticsInfo info = StatisticsManager.serialize(CompletionService.STATISTICS_KEY, item, myLocation); + if (info != null && info != StatisticsInfo.EMPTY) { + manager.incUseCount(new StatisticsInfo(composeContextWithValue(info), SELECTED)); + } } public int suggestPreselectedItem(List sorted, Iterable> groups) {