diff --git a/platform/core-api/src/com/intellij/lang/LanguageExtension.java b/platform/core-api/src/com/intellij/lang/LanguageExtension.java index 992633d0246a..30e0a39b5c99 100644 --- a/platform/core-api/src/com/intellij/lang/LanguageExtension.java +++ b/platform/core-api/src/com/intellij/lang/LanguageExtension.java @@ -22,11 +22,13 @@ package com.intellij.lang; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.KeyedExtensionCollector; import com.intellij.util.containers.ContainerUtil; +import gnu.trove.THashSet; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Set; public class LanguageExtension extends KeyedExtensionCollector { private final T myDefaultImplementation; @@ -97,4 +99,16 @@ public class LanguageExtension extends KeyedExtensionCollector { protected Key getLanguageCache() { return IN_LANGUAGE_CACHE; } + + @NotNull + protected Set getAllBaseLanguageIdsWithAny(@NotNull Language key) { + Set allowed = new THashSet(); + while (key != null) { + allowed.add(keyToString(key)); + key = key.getBaseLanguage(); + } + allowed.add("any"); + return allowed; + } + } diff --git a/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionConfidenceEP.java b/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionConfidenceEP.java index 451630e7a093..800494df91d1 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionConfidenceEP.java +++ b/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionConfidenceEP.java @@ -26,7 +26,13 @@ import java.util.List; * @author peter */ public class CompletionConfidenceEP extends LanguageExtensionPoint { - private static final LanguageExtension INSTANCE = new LanguageExtension("com.intellij.completion.confidence"); + private static final LanguageExtension INSTANCE = new LanguageExtension("com.intellij.completion.confidence") { + @NotNull + @Override + protected List buildExtensions(@NotNull String stringKey, @NotNull Language key) { + return buildExtensions(getAllBaseLanguageIdsWithAny(key)); + } + }; public static List forLanguage(@NotNull Language language) { return INSTANCE.allForLanguage(language); diff --git a/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionContributor.java b/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionContributor.java index ac368eae64bd..b7fbe67b73d6 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionContributor.java +++ b/platform/lang-api/src/com/intellij/codeInsight/completion/CompletionContributor.java @@ -18,13 +18,13 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementPresentation; import com.intellij.lang.Language; +import com.intellij.lang.LanguageExtension; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.util.Computable; -import com.intellij.openapi.util.KeyedExtensionCollector; import com.intellij.openapi.util.Pair; import com.intellij.patterns.ElementPattern; import com.intellij.psi.PsiElement; @@ -33,13 +33,11 @@ import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.Consumer; import com.intellij.util.ProcessingContext; import com.intellij.util.containers.MultiMap; -import gnu.trove.THashSet; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Set; /** * Completion FAQ:

@@ -242,33 +240,15 @@ public abstract class CompletionContributor { @NotNull public static List forLanguage(@NotNull Language language) { - return MyExtensionPointManager.INSTANCE.forKey(language); + return INSTANCE.forKey(language); } - private static class MyExtensionPointManager extends KeyedExtensionCollector { - public static final MyExtensionPointManager INSTANCE = new MyExtensionPointManager(); - - MyExtensionPointManager() { - super("com.intellij.completion.contributor"); - } - + private static final LanguageExtension INSTANCE = new LanguageExtension("com.intellij.completion.contributor") { @NotNull @Override protected List buildExtensions(@NotNull String stringKey, @NotNull Language key) { - Set allowed = new THashSet(); - while (key != null) { - allowed.add(keyToString(key)); - key = key.getBaseLanguage(); - } - allowed.add("any"); - return buildExtensions(allowed); + return buildExtensions(getAllBaseLanguageIdsWithAny(key)); } - - @NotNull - @Override - protected String keyToString(@NotNull Language key) { - return key.getID(); - } - } + }; }