less LookupItem usages in java-impl

This commit is contained in:
Peter Gromov
2009-09-04 21:01:24 +04:00
parent 9a7d6d16e6
commit 427a343b28
24 changed files with 74 additions and 85 deletions
@@ -1,7 +1,7 @@
package com.intellij.codeInsight.completion;
import com.intellij.codeInsight.CodeInsightUtilBase;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.lang.StdLanguages;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
@@ -204,9 +204,9 @@ public class AllClassesGetter {
});
}
public static LookupItem<PsiClass> createLookupItem(@NotNull final PsiClass psiClass) {
return ApplicationManager.getApplication().runReadAction(new Computable<LookupItem<PsiClass>>() {
public LookupItem compute() {
public static LookupElement createLookupItem(@NotNull final PsiClass psiClass) {
return ApplicationManager.getApplication().runReadAction(new Computable<LookupElement>() {
public LookupElement compute() {
return new JavaPsiClassReferenceElement(psiClass).setInsertHandler(INSERT_HANDLER);
}
});
@@ -16,7 +16,7 @@ import org.jetbrains.annotations.Nullable;
* @author peter
*/
public class CastingLookupElementDecorator extends LookupElementDecorator<LookupElement> implements TypedLookupItem {
private final LookupItem myCastItem;
private final LookupElement myCastItem;
private final PsiType myCastType;
private static final LookupElementVisagiste<CastingLookupElementDecorator> CASTING_VISAGISTE = new LookupElementVisagiste<CastingLookupElementDecorator>() {
@Override
@@ -43,9 +43,9 @@ import com.intellij.psi.statistics.JavaStatisticsManager;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiTypesUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.Processor;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Nullable;
@@ -887,7 +887,7 @@ public class CreateFromUsageUtils {
PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(context.getEditor().getDocument());
PsiElement elementAt = file.findElementAt(offset);
PsiParameterList parameterList = PsiTreeUtil.getParentOfType(elementAt, PsiParameterList.class);
if (parameterList == null) return LookupItem.EMPTY_ARRAY;
if (parameterList == null) return LookupElement.EMPTY_ARRAY;
PsiParameter parameter = PsiTreeUtil.getParentOfType(elementAt, PsiParameter.class);
@@ -927,7 +927,7 @@ public class CreateFromUsageUtils {
}
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
}
}
@@ -4,8 +4,7 @@ import com.intellij.codeInsight.CodeInsightUtilBase;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.intention.impl.BaseIntentionAction;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.template.*;
import com.intellij.ide.DataManager;
import com.intellij.openapi.application.ApplicationManager;
@@ -292,11 +291,11 @@ public class CreateLocalVarFromInstanceofAction extends BaseIntentionAction {
uniqueNames.add(name);
}
Set<LookupItem> itemSet = new LinkedHashSet<LookupItem>();
Set<LookupElement> itemSet = new LinkedHashSet<LookupElement>();
for (String name : uniqueNames) {
LookupItemUtil.addLookupItem(itemSet, name);
itemSet.add(LookupElementBuilder.create(name));
}
final LookupItem[] lookupItems = itemSet.toArray(new LookupItem[itemSet.size()]);
final LookupElement[] lookupItems = itemSet.toArray(new LookupElement[itemSet.size()]);
final Result result = uniqueNames.isEmpty() ? null : new TextResult(uniqueNames.get(0));
Expression expr = new Expression() {
@@ -4,7 +4,6 @@ import com.intellij.codeInsight.CodeInsightUtilBase;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.intention.impl.TypeExpression;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.template.*;
import com.intellij.codeInsight.template.impl.TemplateState;
@@ -117,22 +116,22 @@ public class CreatePropertyFromUsageFix extends CreateFromUsageBaseFix {
}
public LookupElement[] calculateLookupItems(ExpressionContext context) {
Set<LookupItem> set = new LinkedHashSet<LookupItem>();
LookupItemUtil.addLookupItem(set, myField);
Set<LookupElement> set = new LinkedHashSet<LookupElement>();
set.add(LookupItemUtil.objectToLookupItem(myField));
PsiField[] fields = myClass.getFields();
for (PsiField otherField : fields) {
if (!myDefaultFieldName.equals(otherField.getName())) {
PsiType otherType = otherField.getType();
for (PsiType type : myExpectedTypes) {
if (type.equals(otherType)) {
LookupItemUtil.addLookupItem(set, otherField);
set.add(LookupItemUtil.objectToLookupItem(otherField));
}
}
}
}
if (set.size() < 2) return null;
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
}
@@ -12,8 +12,7 @@ import com.intellij.codeInsight.CodeInsightUtilBase;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.template.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
@@ -62,8 +61,8 @@ public class RenameWrongRefFix implements IntentionAction {
}
private class ReferenceNameExpression extends Expression {
class HammingComparator implements Comparator<LookupItem> {
public int compare(LookupItem lookupItem1, LookupItem lookupItem2) {
class HammingComparator implements Comparator<LookupElement> {
public int compare(LookupElement lookupItem1, LookupElement lookupItem2) {
String s1 = lookupItem1.getLookupString();
String s2 = lookupItem2.getLookupString();
int diff1 = 0;
@@ -78,13 +77,13 @@ public class RenameWrongRefFix implements IntentionAction {
}
}
ReferenceNameExpression(LookupItem[] items, String oldReferenceName) {
ReferenceNameExpression(LookupElement[] items, String oldReferenceName) {
myItems = items;
myOldReferenceName = oldReferenceName;
Arrays.sort(myItems, new HammingComparator ());
}
LookupItem[] myItems;
LookupElement[] myItems;
private final String myOldReferenceName;
public Result calculateResult(ExpressionContext context) {
@@ -104,14 +103,14 @@ public class RenameWrongRefFix implements IntentionAction {
}
}
private LookupItem[] collectItems() {
Set<LookupItem> items = new LinkedHashSet<LookupItem>();
private LookupElement[] collectItems() {
Set<LookupElement> items = new LinkedHashSet<LookupElement>();
boolean qualified = myRefExpr.getQualifierExpression() != null;
if (!qualified && !(myRefExpr.getParent() instanceof PsiMethodCallExpression)) {
PsiVariable[] vars = CreateFromUsageUtils.guessMatchingVariables(myRefExpr);
for (PsiVariable var : vars) {
LookupItemUtil.addLookupItem(items, var.getName());
items.add(LookupElementBuilder.create(var.getName()));
}
} else {
class MyScopeProcessor extends BaseScopeProcessor {
@@ -151,11 +150,11 @@ public class RenameWrongRefFix implements IntentionAction {
myRefExpr.processVariants(processor);
PsiElement[] variants = processor.getVariants();
for (PsiElement variant : variants) {
LookupItemUtil.addLookupItem(items, ((PsiNamedElement)variant).getName());
items.add(LookupElementBuilder.create(((PsiNamedElement)variant).getName()));
}
}
return items.toArray(new LookupItem[items.size()]);
return items.toArray(new LookupElement[items.size()]);
}
public void invoke(@NotNull Project project, final Editor editor, PsiFile file) {
@@ -163,7 +162,7 @@ public class RenameWrongRefFix implements IntentionAction {
PsiReferenceExpression[] refs = CreateFromUsageUtils.collectExpressions(myRefExpr, PsiMember.class, PsiFile.class);
if (!ApplicationManager.getApplication().isUnitTestMode()) {
PsiElement element = PsiTreeUtil.getParentOfType(myRefExpr, PsiMember.class, PsiFile.class);
LookupItem[] items = collectItems();
LookupElement[] items = collectItems();
ReferenceNameExpression refExpr = new ReferenceNameExpression(items, myRefExpr.getReferenceName());
TemplateBuilderImpl builder = new TemplateBuilderImpl(element);
@@ -3,8 +3,7 @@ package com.intellij.codeInsight.generation.surroundWith;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.guess.GuessManager;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.lookup.PsiTypeLookupItem;
import com.intellij.codeInsight.template.*;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.ScrollType;
@@ -36,16 +35,16 @@ class JavaWithCastSurrounder extends JavaExpressionSurrounder {
return null;
}
private Template generateTemplate(Project project, String exprText, final PsiType[] suggestedTypes) {
private static Template generateTemplate(Project project, String exprText, final PsiType[] suggestedTypes) {
final TemplateManager templateManager = TemplateManager.getInstance(project);
final Template template = templateManager.createTemplate("", "");
template.setToReformat(true);
Set<LookupItem> itemSet = new LinkedHashSet<LookupItem>();
Set<LookupElement> itemSet = new LinkedHashSet<LookupElement>();
for (PsiType type : suggestedTypes) {
LookupItemUtil.addLookupItem(itemSet, type);
itemSet.add(PsiTypeLookupItem.createLookupItem(type));
}
final LookupItem[] lookupItems = itemSet.toArray(new LookupItem[itemSet.size()]);
final LookupElement[] lookupItems = itemSet.toArray(new LookupElement[itemSet.size()]);
final Result result = suggestedTypes.length > 0 ? new PsiTypeResult(suggestedTypes[0], project) : null;
@@ -1,8 +1,7 @@
package com.intellij.codeInsight.intention.impl;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.lookup.PsiTypeLookupItem;
import com.intellij.codeInsight.template.Expression;
import com.intellij.codeInsight.template.ExpressionContext;
import com.intellij.codeInsight.template.PsiTypeResult;
@@ -46,14 +45,14 @@ public class TypeExpression extends Expression {
if (myItems.size() <= 1) return null;
PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments();
List<LookupItem> result = new ArrayList<LookupItem>(myItems.size());
List<LookupElement> result = new ArrayList<LookupElement>(myItems.size());
for (final SmartTypePointer item : myItems) {
final PsiType type = item.getType();
if (type != null) {
LookupItemUtil.addLookupItem(result, type);
result.add(PsiTypeLookupItem.createLookupItem(type));
}
}
return result.toArray(new LookupItem[result.size()]);
return result.toArray(new LookupElement[result.size()]);
}
}
@@ -1,7 +1,6 @@
package com.intellij.codeInsight.template.impl;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.template.Expression;
import com.intellij.codeInsight.template.ExpressionContext;
import com.intellij.codeInsight.template.Result;
@@ -28,6 +27,6 @@ public class TextExpression extends Expression {
}
public LookupElement[] calculateLookupItems(ExpressionContext expressionContext) {
return new LookupItem[0];
return LookupElement.EMPTY_ARRAY;
}
}
@@ -16,22 +16,21 @@
package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.template.*;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.psi.PsiMember;
import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiClass;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.template.*;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiMember;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.searches.AnnotatedMembersSearch;
import com.intellij.util.Query;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.util.Set;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* Created by IntelliJ IDEA.
@@ -92,7 +91,7 @@ public class AnnotatedMacro implements Macro {
final Query<PsiMember> query = findAnnotated(context, params);
if (query != null) {
Set<LookupItem> set = new LinkedHashSet<LookupItem>();
Set<LookupElement> set = new LinkedHashSet<LookupElement>();
final String secondParamValue = params.length > 1 ? params[1].calculateResult(context).toString() : null;
final boolean isShortName = secondParamValue != null && !Boolean.valueOf(secondParamValue);
final PsiClass findInClass =
@@ -102,11 +101,11 @@ public class AnnotatedMacro implements Macro {
if (findInClass != null && !object.getContainingClass().equals(findInClass)) continue;
boolean isClazz = object instanceof PsiClass;
final String name = isShortName || !isClazz ? object.getName() : ((PsiClass) object).getQualifiedName();
LookupItemUtil.addLookupItem(set, name);
set.add(LookupElementBuilder.create(name));
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
return new LookupItem[0];
return LookupElement.EMPTY_ARRAY;
}
}
@@ -4,7 +4,6 @@
package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.template.*;
import com.intellij.openapi.project.Project;
@@ -58,6 +57,6 @@ public class CastToLeftSideTypeMacro implements Macro {
}
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
return LookupItem.EMPTY_ARRAY;
return LookupElement.EMPTY_ARRAY;
}
}
@@ -1,7 +1,6 @@
package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.template.*;
import com.intellij.openapi.project.Project;
@@ -44,7 +43,7 @@ class CurrentPackageMacro implements Macro {
}
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
return LookupItem.EMPTY_ARRAY;
return LookupElement.EMPTY_ARRAY;
}
@@ -2,8 +2,7 @@ package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.template.*;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
@@ -92,15 +91,17 @@ public class DescendantClassesEnumMacro implements Macro {
final List<PsiClass> classes = findDescendants(context, params);
if (classes == null || classes.size() == 0) return null;
Set<LookupItem> set = new LinkedHashSet<LookupItem>();
Set<LookupElement> set = new LinkedHashSet<LookupElement>();
boolean isShortName = params.length > 1 && !Boolean.valueOf(params[1].calculateResult(context).toString());
for (PsiClass object : classes) {
final String name = isShortName ? object.getName() : object.getQualifiedName();
if (name != null && name.length() > 0) LookupItemUtil.addLookupItem(set, name);
if (name != null && name.length() > 0) {
set.add(LookupElementBuilder.create(name));
}
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
private static boolean isAbstractOrInterface(final PsiClass psiClass) {
@@ -1,9 +1,8 @@
package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.template.Expression;
import com.intellij.codeInsight.template.ExpressionContext;
import com.intellij.codeInsight.template.Macro;
@@ -38,13 +37,13 @@ public class EnumMacro implements Macro{
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
if (params.length ==0) return null;
Set<LookupItem> set = new LinkedHashSet<LookupItem>();
Set<LookupElement> set = new LinkedHashSet<LookupElement>();
for (Expression param : params) {
Result object = param.calculateResult(context);
LookupItemUtil.addLookupItem(set, object.toString());
set.add(LookupElementBuilder.create(object.toString()));
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
}
@@ -50,7 +50,7 @@ public class ExpectedTypeMacro implements Macro{
for (PsiType type : types) {
JavaTemplateUtil.addTypeLookupItem(set, type);
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
@Nullable
@@ -2,8 +2,7 @@ package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupItemUtil;
import com.intellij.codeInsight.lookup.LookupElementBuilder;
import com.intellij.codeInsight.template.*;
import com.intellij.openapi.util.text.StringUtil;
import groovy.lang.Binding;
@@ -71,8 +70,8 @@ public class GroovyScriptMacro implements Macro {
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
Object o = runIt(params, context);
if (o != null) {
Set<LookupItem> set = new LinkedHashSet<LookupItem>();
LookupItemUtil.addLookupItem(set, o.toString());
Set<LookupElement> set = new LinkedHashSet<LookupElement>();
set.add(LookupElementBuilder.create(o.toString()));
return set.toArray(new LookupElement[set.size()]);
}
return LookupElement.EMPTY_ARRAY;
@@ -49,7 +49,7 @@ public class GuessElementTypeMacro implements Macro {
for (PsiType type : types) {
JavaTemplateUtil.addTypeLookupItem(set, type);
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
@Nullable
@@ -1,7 +1,6 @@
package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.template.*;
import com.intellij.openapi.project.Project;
@@ -75,6 +74,6 @@ public class IterableComponentTypeMacro implements Macro {
}
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
return LookupItem.EMPTY_ARRAY;
return LookupElement.EMPTY_ARRAY;
}
}
@@ -1,7 +1,6 @@
package com.intellij.codeInsight.template.macro;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.template.*;
import com.intellij.openapi.project.Project;
@@ -57,6 +56,6 @@ public class RightSideTypeMacro implements Macro {
}
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
return LookupItem.EMPTY_ARRAY;
return LookupElement.EMPTY_ARRAY;
}
}
@@ -39,7 +39,7 @@ public class SubtypesMacro implements Macro {
}
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
if (params.length == 0) return LookupItem.EMPTY_ARRAY;
if (params.length == 0) return LookupElement.EMPTY_ARRAY;
Result paramResult = params[0].calculateQuickResult(context);
if (paramResult instanceof PsiTypeResult) {
final PsiType type = ((PsiTypeResult)paramResult).getType();
@@ -52,8 +52,8 @@ public class SubtypesMacro implements Macro {
for (PsiType t: types) {
JavaTemplateUtil.addTypeLookupItem(set, t);
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
return LookupItem.EMPTY_ARRAY;
return LookupElement.EMPTY_ARRAY;
}
}
@@ -51,7 +51,7 @@ public class TypeOfVariableMacro implements Macro {
}
public LookupElement[] calculateLookupItems(@NotNull Expression[] params, ExpressionContext context) {
return LookupItem.EMPTY_ARRAY;
return LookupElement.EMPTY_ARRAY;
}
}
@@ -48,7 +48,7 @@ public class VariableOfTypeMacro implements Macro {
for (PsiElement var : vars) {
JavaTemplateUtil.addElementLookupItem(set, var);
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
@Nullable
@@ -25,7 +25,7 @@ public abstract class VariableTypeMacroBase implements Macro {
for (PsiElement element : vars) {
JavaTemplateUtil.addElementLookupItem(set, element);
}
return set.toArray(new LookupItem[set.size()]);
return set.toArray(new LookupElement[set.size()]);
}
public Result calculateResult(@NotNull Expression[] params, ExpressionContext context) {
@@ -3,6 +3,7 @@ package com.intellij.refactoring.changeSignature;
import com.intellij.codeInsight.completion.JavaCompletionUtil;
import com.intellij.codeInsight.lookup.LookupItem;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.diagnostic.Logger;
@@ -368,7 +369,7 @@ public class ChangeSignatureDialog extends RefactoringDialog {
Set<LookupItem> set = new LinkedHashSet<LookupItem>();
JavaCompletionUtil.completeVariableNameForRefactoring(myProject, set, prefix, type, VariableKind.PARAMETER);
LookupItem[] lookupItems = set.toArray(new LookupItem[set.size()]);
LookupElement[] lookupItems = set.toArray(new LookupElement[set.size()]);
editor.getCaretModel().moveToOffset(prefix.length());
editor.getSelectionModel().removeSelection();
LookupManager.getInstance(myProject).showLookup(editor, lookupItems, prefix, null);