mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
allow to define CompletionConfidence for language="any"
This commit is contained in:
@@ -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<T> extends KeyedExtensionCollector<T, Language> {
|
||||
private final T myDefaultImplementation;
|
||||
@@ -97,4 +99,16 @@ public class LanguageExtension<T> extends KeyedExtensionCollector<T, Language> {
|
||||
protected Key<T> getLanguageCache() {
|
||||
return IN_LANGUAGE_CACHE;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected Set<String> getAllBaseLanguageIdsWithAny(@NotNull Language key) {
|
||||
Set<String> allowed = new THashSet<String>();
|
||||
while (key != null) {
|
||||
allowed.add(keyToString(key));
|
||||
key = key.getBaseLanguage();
|
||||
}
|
||||
allowed.add("any");
|
||||
return allowed;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+7
-1
@@ -26,7 +26,13 @@ import java.util.List;
|
||||
* @author peter
|
||||
*/
|
||||
public class CompletionConfidenceEP extends LanguageExtensionPoint<CompletionContributor> {
|
||||
private static final LanguageExtension<CompletionConfidence> INSTANCE = new LanguageExtension<CompletionConfidence>("com.intellij.completion.confidence");
|
||||
private static final LanguageExtension<CompletionConfidence> INSTANCE = new LanguageExtension<CompletionConfidence>("com.intellij.completion.confidence") {
|
||||
@NotNull
|
||||
@Override
|
||||
protected List<CompletionConfidence> buildExtensions(@NotNull String stringKey, @NotNull Language key) {
|
||||
return buildExtensions(getAllBaseLanguageIdsWithAny(key));
|
||||
}
|
||||
};
|
||||
|
||||
public static List<CompletionConfidence> forLanguage(@NotNull Language language) {
|
||||
return INSTANCE.allForLanguage(language);
|
||||
|
||||
+5
-25
@@ -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:<p>
|
||||
@@ -242,33 +240,15 @@ public abstract class CompletionContributor {
|
||||
|
||||
@NotNull
|
||||
public static List<CompletionContributor> forLanguage(@NotNull Language language) {
|
||||
return MyExtensionPointManager.INSTANCE.forKey(language);
|
||||
return INSTANCE.forKey(language);
|
||||
}
|
||||
|
||||
private static class MyExtensionPointManager extends KeyedExtensionCollector<CompletionContributor, Language> {
|
||||
public static final MyExtensionPointManager INSTANCE = new MyExtensionPointManager();
|
||||
|
||||
MyExtensionPointManager() {
|
||||
super("com.intellij.completion.contributor");
|
||||
}
|
||||
|
||||
private static final LanguageExtension<CompletionContributor> INSTANCE = new LanguageExtension<CompletionContributor>("com.intellij.completion.contributor") {
|
||||
@NotNull
|
||||
@Override
|
||||
protected List<CompletionContributor> buildExtensions(@NotNull String stringKey, @NotNull Language key) {
|
||||
Set<String> allowed = new THashSet<String>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user