From 09ae3cb028accc01cc45402010ff579e6756bac3 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 8 Sep 2015 10:41:05 +0200 Subject: [PATCH] old completion code cleanup --- .../completion/CompletionData.java | 51 ++++++------------- .../completion/CompletionUtil.java | 39 +------------- .../completion/CompletionVariant.java | 47 +++++------------ .../LegacyCompletionContributor.java | 5 +- .../codeInsight/lookup/LookupItem.java | 3 +- 5 files changed, 34 insertions(+), 111 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionData.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionData.java index 2f3fe2bf6250..543ce31dfb9a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionData.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionData.java @@ -45,7 +45,7 @@ import static com.intellij.patterns.StandardPatterns.character; import static com.intellij.patterns.StandardPatterns.not; /** - * @deprecated see {@link com.intellij.codeInsight.completion.CompletionContributor} + * @deprecated see {@link CompletionContributor} */ public class CompletionData { private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.completion.CompletionData"); @@ -81,30 +81,15 @@ public class CompletionData { return false; } - protected void defineScopeEquivalence(Class scopeClass, Class equivClass){ - final Iterator iter = myCompletionVariants.iterator(); - if(isScopeFinal(scopeClass)){ - declareFinalScope(equivClass); - } - - while(iter.hasNext()){ - final CompletionVariant variant = iter.next(); - if(variant.isScopeClassAcceptable(scopeClass)){ - variant.includeScopeClass(equivClass, variant.isScopeClassFinal(scopeClass)); - } - } - } - /** * @deprecated - * @see com.intellij.codeInsight.completion.CompletionContributor + * @see CompletionContributor */ protected void registerVariant(CompletionVariant variant){ myCompletionVariants.add(variant); } - public void completeReference(final PsiReference reference, final Set set, @NotNull final PsiElement position, final PsiFile file, - final int offset){ + public void completeReference(final PsiReference reference, final Set set, @NotNull final PsiElement position, final PsiFile file) { final CompletionVariant[] variants = findVariants(position, file); boolean hasApplicableVariants = false; for (CompletionVariant variant : variants) { @@ -123,11 +108,9 @@ public class CompletionData { ContainerUtil.addAll(set, findVariants(position, file)); } - public void completeKeywordsBySet(final Set set, Set variants, final PsiElement position, - final PrefixMatcher matcher, - final PsiFile file){ + void completeKeywordsBySet(final Set set, Set variants, final PsiElement position){ for (final CompletionVariant variant : variants) { - variant.addKeywords(set, position, matcher, file, this); + variant.addKeywords(set, position, this); } } @@ -164,7 +147,7 @@ public class CompletionData { protected final CompletionVariant myGenericVariant = new CompletionVariant() { @Override - public void addReferenceCompletions(PsiReference reference, PsiElement position, Set set, final PsiFile file, + void addReferenceCompletions(PsiReference reference, PsiElement position, Set set, final PsiFile file, final CompletionData completionData) { completeReference(reference, position, set, TailType.NONE, file, TrueFilter.INSTANCE, this); } @@ -260,13 +243,12 @@ public class CompletionData { if (object instanceof LookupValueWithUIHint && ((LookupValueWithUIHint) object).isBold()) { item.setBold(); } - item.setAttribute(CompletionUtil.TAIL_TYPE_ATTR, tailType); + item.setAttribute(LookupItem.TAIL_TYPE_ATTR, tailType); return item; } - protected void addLookupItem(Set set, TailType tailType, @NotNull Object completion, final PsiFile file, - final CompletionVariant variant) { + protected void addLookupItem(Set set, TailType tailType, @NotNull Object completion, final CompletionVariant variant) { LookupElement ret = objectToLookupItem(completion); if (ret == null) return; if (!(ret instanceof LookupItem)) { @@ -316,7 +298,7 @@ public class CompletionData { if (completion instanceof PsiElement) { final PsiElement psiElement = (PsiElement)completion; if (filter.isClassAcceptable(psiElement.getClass()) && filter.isAcceptable(psiElement, position)) { - addLookupItem(set, tailType, completion, file, variant); + addLookupItem(set, tailType, completion, variant); } } else { @@ -327,7 +309,7 @@ public class CompletionData { } } try { - addLookupItem(set, tailType, completion, file, variant); + addLookupItem(set, tailType, completion, variant); } catch (AssertionError e) { LOG.error("Caused by variant from reference: " + reference.getClass(), e); @@ -351,30 +333,27 @@ public class CompletionData { return references; } - protected void addKeywords(final Set set, final PsiElement position, final PrefixMatcher matcher, final PsiFile file, - final CompletionVariant variant, final Object comp, final TailType tailType) { + void addKeywords(final Set set, final PsiElement position, final CompletionVariant variant, final Object comp, final TailType tailType) { if (comp instanceof String) { - addKeyword(set, tailType, comp, matcher, file, variant); + addKeyword(set, tailType, comp, variant); } else { final CompletionContext context = position.getUserData(CompletionContext.COMPLETION_CONTEXT_KEY); if (comp instanceof ContextGetter) { final Object[] elements = ((ContextGetter)comp).get(position, context); for (Object element : elements) { - addLookupItem(set, tailType, element, file, variant); + addLookupItem(set, tailType, element, variant); } } } } - protected void addKeyword(Set set, final TailType tailType, final Object comp, final PrefixMatcher matcher, - final PsiFile file, - final CompletionVariant variant) { + private void addKeyword(Set set, final TailType tailType, final Object comp, final CompletionVariant variant) { for (final LookupElement item : set) { if (item.getObject().toString().equals(comp.toString())) { return; } } - addLookupItem(set, tailType, comp, file, variant); + addLookupItem(set, tailType, comp, variant); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java index 764533085a4e..53642ac1f995 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionUtil.java @@ -16,11 +16,9 @@ package com.intellij.codeInsight.completion; -import com.intellij.codeInsight.CodeInsightSettings; import com.intellij.codeInsight.TailType; import com.intellij.codeInsight.lookup.Lookup; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.codeInsight.lookup.LookupValueWithPsiElement; import com.intellij.diagnostic.LogEventException; import com.intellij.diagnostic.ThreadDumper; @@ -32,8 +30,6 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.util.Key; -import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.patterns.ElementPattern; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; @@ -42,7 +38,6 @@ import com.intellij.psi.filters.TrueFilter; import com.intellij.util.ExceptionUtil; import com.intellij.util.UnmodifiableIterator; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.HashMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -52,7 +47,6 @@ import java.util.*; import static com.intellij.patterns.PlatformPatterns.character; public class CompletionUtil { - public static final Key TAIL_TYPE_ATTR = LookupItem.TAIL_TYPE_ATTR; private static final CompletionData ourGenericCompletionData = new CompletionData() { { @@ -61,36 +55,9 @@ public class CompletionUtil { registerVariant(variant); } }; - private static final HashMap> ourCustomCompletionDatas = new HashMap>(); - public static final @NonNls String DUMMY_IDENTIFIER = CompletionInitializationContext.DUMMY_IDENTIFIER; public static final @NonNls String DUMMY_IDENTIFIER_TRIMMED = DUMMY_IDENTIFIER.trim(); - public static boolean startsWith(String text, String prefix) { - //if (text.length() <= prefix.length()) return false; - return toLowerCase(text).startsWith(toLowerCase(prefix)); - } - - private static String toLowerCase(String text) { - CodeInsightSettings settings = CodeInsightSettings.getInstance(); - switch (settings.COMPLETION_CASE_SENSITIVE) { - case CodeInsightSettings.NONE: - return text.toLowerCase(); - - case CodeInsightSettings.FIRST_LETTER: { - StringBuffer buffer = new StringBuffer(); - buffer.append(text.toLowerCase()); - if (buffer.length() > 0) { - buffer.setCharAt(0, text.charAt(0)); - } - return buffer.toString(); - } - - default: - return text; - } - } - @Nullable public static CompletionData getCompletionDataByElement(@Nullable final PsiElement position, @NotNull PsiFile originalFile) { if (position == null) return null; @@ -110,17 +77,15 @@ public class CompletionUtil { } @Nullable - public static CompletionData getCompletionDataByFileType(FileType fileType) { + private static CompletionData getCompletionDataByFileType(FileType fileType) { for(CompletionDataEP ep: Extensions.getExtensions(CompletionDataEP.EP_NAME)) { if (ep.fileType.equals(fileType.getName())) { return ep.getHandler(); } } - final NotNullLazyValue lazyValue = ourCustomCompletionDatas.get(fileType); - return lazyValue == null ? null : lazyValue.getValue(); + return null; } - public static boolean shouldShowFeature(final CompletionParameters parameters, @NonNls final String id) { if (FeatureUsageTracker.getInstance().isToBeAdvertisedInLookup(id, parameters.getPosition().getProject())) { FeatureUsageTracker.getInstance().triggerFeatureShown(id); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java index 13e213f35959..1e97f4026c11 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionVariant.java @@ -41,7 +41,6 @@ public class CompletionVariant { private final Set myScopeClasses = new HashSet(); private ElementFilter myPosition; private final List myCompletionsList = new ArrayList(); - private final Set myScopeClassExceptions = new HashSet(); private InsertHandler myInsertHandler = null; private final Map myItemProperties = new HashMap(); @@ -63,15 +62,15 @@ public class CompletionVariant { myPosition = position; } - public boolean isScopeAcceptable(PsiElement scope){ + boolean isScopeAcceptable(PsiElement scope){ return isScopeClassAcceptable(scope.getClass()); } - public boolean isScopeFinal(PsiElement scope){ + boolean isScopeFinal(PsiElement scope){ return isScopeClassFinal(scope.getClass()); } - public InsertHandler getInsertHandler(){ + InsertHandler getInsertHandler(){ return myInsertHandler; } @@ -79,15 +78,11 @@ public class CompletionVariant { myInsertHandler = handler; } - public void setItemProperty(Object id, Object value){ - myItemProperties.put(id, value); - } - - public Map getItemProperties() { + Map getItemProperties() { return myItemProperties; } - public boolean isScopeClassFinal(Class scopeClass){ + private boolean isScopeClassFinal(Class scopeClass){ for (final Object myScopeClass : myScopeClasses) { Scope scope = (Scope)myScopeClass; if (ReflectionUtil.isAssignable(scope.myClass, scopeClass) && scope.myIsFinalScope) { @@ -97,7 +92,7 @@ public class CompletionVariant { return false; } - public boolean isScopeClassAcceptable(Class scopeClass){ + private boolean isScopeClassAcceptable(Class scopeClass){ boolean ret = false; for (final Object myScopeClass : myScopeClasses) { @@ -108,21 +103,9 @@ public class CompletionVariant { } } - if(ret){ - for (final Class aClass: myScopeClassExceptions) { - if (ReflectionUtil.isAssignable(aClass, scopeClass)) { - ret = false; - break; - } - } - } return ret; } - public void excludeScopeClass(Class aClass){ - myScopeClassExceptions.add(aClass); - } - public void includeScopeClass(Class aClass){ myScopeClasses.add(new Scope(aClass, false)); } @@ -169,11 +152,11 @@ public class CompletionVariant { } } - public boolean isVariantApplicable(PsiElement position, PsiElement scope){ + boolean isVariantApplicable(PsiElement position, PsiElement scope){ return isScopeAcceptable(scope) && myPosition.isAcceptable(position, scope); } - public void addReferenceCompletions(PsiReference reference, PsiElement position, Set set, final PsiFile file, + void addReferenceCompletions(PsiReference reference, PsiElement position, Set set, final PsiFile file, final CompletionData completionData){ for (final CompletionVariantItem ce : myCompletionsList) { if(ce.myCompletion instanceof ElementFilter){ @@ -183,15 +166,13 @@ public class CompletionVariant { } } - public void addKeywords(Set set, PsiElement position, final PrefixMatcher matcher, final PsiFile file, - final CompletionData completionData){ - + void addKeywords(Set set, PsiElement position, final CompletionData completionData) { for (final CompletionVariantItem ce : myCompletionsList) { - completionData.addKeywords(set, position, matcher, file, this, ce.myCompletion, ce.myTailType); + completionData.addKeywords(set, position, this, ce.myCompletion, ce.myTailType); } } - public boolean hasReferenceFilter(){ + boolean hasReferenceFilter(){ for (final CompletionVariantItem item: myCompletionsList) { if (item.myCompletion instanceof ElementFilter) { return true; @@ -200,7 +181,7 @@ public class CompletionVariant { return false; } - public boolean hasKeywordCompletions(){ + boolean hasKeywordCompletions(){ for (final CompletionVariantItem item : myCompletionsList) { if (!(item.myCompletion instanceof ElementFilter)) { return true; @@ -220,7 +201,7 @@ public class CompletionVariant { } } - protected static class CompletionVariantItem{ + private static class CompletionVariantItem{ public Object myCompletion; public TailType myTailType; @@ -240,7 +221,7 @@ public class CompletionVariant { } public void setCaseInsensitive(boolean caseInsensitive) { - setItemProperty(LookupItem.CASE_INSENSITIVE, caseInsensitive); + myItemProperties.put(LookupItem.CASE_INSENSITIVE, caseInsensitive); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/LegacyCompletionContributor.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/LegacyCompletionContributor.java index b8b58bf5bd1f..2568dca92ffe 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/LegacyCompletionContributor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/LegacyCompletionContributor.java @@ -55,7 +55,7 @@ public class LegacyCompletionContributor extends CompletionContributor { final Set keywordVariants = new HashSet(); PsiFile file = parameters.getOriginalFile(); completionData.addKeywordVariants(keywordVariants, insertedElement, file); - completionData.completeKeywordsBySet(lookupSet, keywordVariants, insertedElement, result.getPrefixMatcher(), file); + completionData.completeKeywordsBySet(lookupSet, keywordVariants, insertedElement); result.addAllElements(lookupSet); } @@ -70,8 +70,7 @@ public class LegacyCompletionContributor extends CompletionContributor { @Override public void consume(final PsiReference reference, final CompletionResultSet resultSet) { final Set lookupSet = new LinkedHashSet(); - completionData - .completeReference(reference, lookupSet, parameters.getPosition(), parameters.getOriginalFile(), parameters.getOffset()); + completionData.completeReference(reference, lookupSet, parameters.getPosition(), parameters.getOriginalFile()); for (final LookupElement item : lookupSet) { if (resultSet.getPrefixMatcher().prefixMatches(item)) { hasVariants.set(true); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java index 50a7de4f16cf..87f6196218c2 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/LookupItem.java @@ -18,7 +18,6 @@ package com.intellij.codeInsight.lookup; import com.intellij.codeInsight.CharTailType; import com.intellij.codeInsight.TailType; -import com.intellij.codeInsight.completion.CompletionUtil; import com.intellij.codeInsight.completion.InsertHandler; import com.intellij.codeInsight.completion.InsertionContext; import com.intellij.codeInsight.lookup.impl.ElementLookupRenderer; @@ -222,7 +221,7 @@ public class LookupItem extends MutableLookupElement implements Comparable if (lookupElement instanceof LookupItem) { final LookupItem item = (LookupItem)lookupElement; - final TailType attr = item.getAttribute(CompletionUtil.TAIL_TYPE_ATTR); + final TailType attr = item.getAttribute(TAIL_TYPE_ATTR); if (attr != null) { return attr; }