diff --git a/java/java-analysis-api/src/com/intellij/uast/UastMetaLanguage.java b/java/java-analysis-api/src/com/intellij/uast/UastMetaLanguage.java index 62c827b47584..5521dbb25251 100644 --- a/java/java-analysis-api/src/com/intellij/uast/UastMetaLanguage.java +++ b/java/java-analysis-api/src/com/intellij/uast/UastMetaLanguage.java @@ -3,6 +3,7 @@ package com.intellij.uast; import com.intellij.lang.Language; import com.intellij.lang.MetaLanguage; +import com.intellij.openapi.extensions.ExtensionPointChangeListener; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.uast.UastLanguagePlugin; @@ -22,7 +23,22 @@ public class UastMetaLanguage extends MetaLanguage { Collection languagePlugins = UastLanguagePlugin.Companion.getInstances(); myLanguages = new THashSet<>(languagePlugins.size()); - for (UastLanguagePlugin plugin: languagePlugins) { + initLanguages(languagePlugins); + + UastLanguagePlugin.Companion + .getExtensionPointName() + .getPoint(null) + .addExtensionPointListener(new ExtensionPointChangeListener() { + @Override + public void extensionListChanged() { + myLanguages.clear(); + initLanguages(UastLanguagePlugin.Companion.getInstances()); + } + }, false, null); + } + + private void initLanguages(Collection languagePlugins) { + for (UastLanguagePlugin plugin : languagePlugins) { myLanguages.add(plugin.getLanguage()); } } diff --git a/java/java-psi-impl/src/META-INF/JavaPsiPlugin.xml b/java/java-psi-impl/src/META-INF/JavaPsiPlugin.xml index 9e1f389310e4..20bae5cc469f 100644 --- a/java/java-psi-impl/src/META-INF/JavaPsiPlugin.xml +++ b/java/java-psi-impl/src/META-INF/JavaPsiPlugin.xml @@ -48,7 +48,7 @@ - + diff --git a/platform/core-api/resources/META-INF/Core.xml b/platform/core-api/resources/META-INF/Core.xml index d3a199676948..94c6f0a73752 100644 --- a/platform/core-api/resources/META-INF/Core.xml +++ b/platform/core-api/resources/META-INF/Core.xml @@ -20,7 +20,7 @@ - +