From 1c030d1129ff0e3209d802c7eb5b983914cac55f Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 21 Apr 2020 09:43:00 +0200 Subject: [PATCH] dynamic plugins: meta languages GitOrigin-RevId: 687ba5de85dc724785fe41702a273a50dada293e --- .../com/intellij/uast/UastMetaLanguage.java | 18 +++++++++++++++++- .../src/META-INF/JavaPsiPlugin.xml | 2 +- platform/core-api/resources/META-INF/Core.xml | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) 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 @@ - +