mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 23:39:39 +07:00
dynamic plugins: some java psi stuff
GitOrigin-RevId: 8cbda00cf3790de6da27c1e90deb5ee3990bea8b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b635de50e2
commit
0917e56f43
@@ -7,8 +7,9 @@ import com.intellij.lang.MetaLanguage;
|
||||
import com.intellij.lang.jvm.source.JvmDeclarationSearcher;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.ExtensionPoint;
|
||||
import com.intellij.openapi.extensions.ExtensionPointChangeListener;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.extensions.ExtensionsArea;
|
||||
import com.intellij.util.KeyedLazyInstance;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -20,19 +21,19 @@ public class JvmMetaLanguage extends MetaLanguage {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(JvmMetaLanguage.class);
|
||||
|
||||
private final Set<String> supportedLanguages;
|
||||
private Set<String> supportedLanguages;
|
||||
|
||||
protected JvmMetaLanguage() {
|
||||
super("JVM");
|
||||
ExtensionsArea rootArea = Extensions.getRootArea();
|
||||
if (rootArea.hasExtensionPoint(JvmDeclarationSearcher.EP.getName())) {
|
||||
ExtensionPoint<LanguageExtensionPoint<JvmDeclarationSearcher>> jvmDeclarationSearcherEP =
|
||||
rootArea.getExtensionPoint(JvmDeclarationSearcher.EP.getName());
|
||||
|
||||
LanguageExtensionPoint<JvmDeclarationSearcher>[] jvmDeclarationSearcherImplementations = jvmDeclarationSearcherEP.getExtensions();
|
||||
supportedLanguages = Collections.unmodifiableSet(
|
||||
Arrays.stream(jvmDeclarationSearcherImplementations).map(ep -> ep.getKey()).collect(Collectors.toSet())
|
||||
);
|
||||
ExtensionPoint<KeyedLazyInstance<JvmDeclarationSearcher>> point = JvmDeclarationSearcher.EP.getPoint();
|
||||
if (point != null) {
|
||||
point.addExtensionPointListener(new ExtensionPointChangeListener() {
|
||||
@Override
|
||||
public void extensionListChanged() {
|
||||
supportedLanguages = getSupportedLanguages();
|
||||
}
|
||||
}, false, null);
|
||||
supportedLanguages = getSupportedLanguages();
|
||||
}
|
||||
else {
|
||||
supportedLanguages = Collections.emptySet();
|
||||
@@ -40,6 +41,16 @@ public class JvmMetaLanguage extends MetaLanguage {
|
||||
}
|
||||
}
|
||||
|
||||
private static Set<String> getSupportedLanguages() {
|
||||
ExtensionPoint<LanguageExtensionPoint<JvmDeclarationSearcher>> jvmDeclarationSearcherEP =
|
||||
Extensions.getRootArea().getExtensionPoint(JvmDeclarationSearcher.EP.getName());
|
||||
|
||||
LanguageExtensionPoint<JvmDeclarationSearcher>[] jvmDeclarationSearcherImplementations = jvmDeclarationSearcherEP.getExtensions();
|
||||
return Collections.unmodifiableSet(
|
||||
Arrays.stream(jvmDeclarationSearcherImplementations).map(ep -> ep.getKey()).collect(Collectors.toSet())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matchesLanguage(@NotNull Language language) {
|
||||
return language instanceof JvmLanguage || supportedLanguages.contains(language.getID());
|
||||
|
||||
Reference in New Issue
Block a user