farewell green items in completion
authorpeter <peter@jetbrains.com>
Wed, 1 Feb 2012 21:20:58 +0000 (22:20 +0100)
committerpeter <peter@jetbrains.com>
Wed, 1 Feb 2012 21:20:58 +0000 (22:20 +0100)
platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionLookupArranger.java
platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupCellRenderer.java
platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java
platform/lang-impl/src/com/intellij/internal/DumpLookupElementWeights.java
platform/platform-resources-en/src/misc/registry.properties
platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java

index cb4e49160db1f6d07eda999ff916b374f15ac6ee..e7a9e1b5aa14cb5a5133506a587303e0c50b74e8 100644 (file)
@@ -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<LookupElement> items = lookupImpl.getItems();
-    final int count = Math.min(lookupImpl.getPreferredItemsCount(), lookupImpl.getList().getSelectedIndex());
+    final int count = Math.min(3, lookupImpl.getList().getSelectedIndex());
 
     final List<StatisticsInfo> ignored = new ArrayList<StatisticsInfo>();
     for (int i = 0; i < count; i++) {
index 85c82c2e348baff8ad8db6615ffa1401872c0836..47a5c901cb7e441218ac01a3b5af6c2cdd2c8697 100644 (file)
@@ -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;
   }
 
index 1ee382a684d96e783f2306425a638383225a825b..d3701d44719c1be433638e7a55d794cf323987dc 100644 (file)
@@ -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<LookupElement> group : snapshot.second) {
         for (LookupElement element : group) {
@@ -579,16 +570,6 @@ public class LookupImpl extends LightweightHint implements LookupEx, Disposable
     return p;
   }
 
-  private static List<LookupElement> addRemainingItemsLexicographically(Set<LookupElement> firstItems, Collection<LookupElement> allItems) {
-    List<LookupElement> model = new ArrayList<LookupElement>();
-    for (LookupElement item : allItems) {
-      if (!firstItems.contains(item)) {
-        model.add(item);
-      }
-    }
-    return model;
-  }
-
   private void addMostRelevantItems(final Set<LookupElement> model, final Iterable<List<LookupElement>> 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);
   }
index 4d3cf46f6d045aa5e16ba6add8db6a3c305dc965..5ccb4bdb7cb7a60e4fb74e0795f6710600afd047 100644 (file)
@@ -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<LookupElement,StringBuilder> strings = lookup.getRelevanceStrings();
-
-    final List<LookupElement> items = lookup.getItems();
-    final int count = lookup.getPreferredItemsCount();
+    String sb = StringUtil.join(getLookupElementWeights(lookup), "\n");
+    System.out.println(sb);
+    LOG.info(sb);
+  }
 
-    for (int i = 0; i < items.size(); i++) {
-      LookupElement item = items.get(i);
+  public static List<String> getLookupElementWeights(LookupImpl lookup) {
+    final LinkedHashMap<LookupElement,StringBuilder> strings = lookup.getRelevanceStrings();
+    List<String> sb = new ArrayList<String>();
+    for (LookupElement item : lookup.getItems()) {
       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);
-      }
+      sb.add(s);
     }
+    return sb;
   }
-
 }
\ No newline at end of file
index 7b27f306f17e8c37069eee4b11071468cb4b795f..9f6a55986f075a1a255318e18598efc12c386e00 100644 (file)
@@ -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
index 1ffb735211343cf34fc02757768a58becc3feed6..5c5a7f2a0fae104222689ddf11e3e9caf3b9a486 100644 (file)
@@ -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<LookupElement,StringBuilder> relevanceStrings = lookup.getRelevanceStrings();
-
     final JList list = lookup.getList();
-    final List<LookupElement> model = lookup.getItems();
-    final List<String> actual = new ArrayList<String>();
-    final int count = lookup.getPreferredItemsCount();
-    for (int i = 0; i < count; i++) {
-      actual.add(model.get(i).getLookupString());
-    }
+    List<String> strings = getLookupElementStrings();
+    assert strings != null;
+    final List<String> actual = strings.subList(0, Math.min(expected.length, strings.size()));
     if (!actual.equals(Arrays.asList(expected))) {
-      final List<String> strings = new ArrayList<String>();
-      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());
   }