IDEA-236344 devkit: code insight for "action" extension point attribute

GitOrigin-RevId: eca33e1a23bdfd0aeced5f3b93b88aae8a2c6691
This commit is contained in:
Yann Cébron
2020-03-31 10:01:54 +00:00
committed by intellij-monorepo-bot
parent 3cd90bf4f7
commit 8a3205c2f7
4 changed files with 36 additions and 0 deletions
@@ -35,6 +35,7 @@ public class ExtensionDomExtender extends DomExtender<Extension> {
private static final PsiClassConverter CLASS_CONVERTER = new PluginPsiClassConverter();
private static final LanguageResolvingConverter LANGUAGE_CONVERTER = new LanguageResolvingConverter();
private static final ActionOrGroupResolveConverter ACTION_CONVERTER = new ActionOrGroupResolveConverter.OnlyActions();
@Override
public void registerExtensions(@NotNull final Extension extension, @NotNull final DomExtensionsRegistrar registrar) {
@@ -107,6 +108,9 @@ public class ExtensionDomExtender extends DomExtender<Extension> {
if ("language".equals(attributeName)) {
extension.setConverter(LANGUAGE_CONVERTER);
}
else if ("action".equals(attributeName)) {
extension.setConverter(ACTION_CONVERTER);
}
}
else if (clazz == PsiClass.class) {
markAsClass(extension, true, withElement);
@@ -0,0 +1,5 @@
public class MyActionAttributeEPBean {
@com.intellij.util.xmlb.annotations.Attribute("action")
public String action;
}
@@ -0,0 +1,21 @@
<idea-plugin>
<id>com.intellij.myPlugin</id>
<vendor>JetBrains</vendor>
<version>1.0</version>
<extensionPoints>
<extensionPoint name="myActionEP" beanClass="MyActionAttributeEPBean"/>
</extensionPoints>
<extensions defaultExtensionNs="com.intellij.myPlugin">
<myActionEP action="myActionId"/>
<myActionEP action="<error descr="Cannot resolve action 'INVALID_VALUE'">INVALID_VALUE</error>"/>
</extensions>
<actions>
<action id="myActionId" class="foo.bar.BarAction"/>
</actions>
</idea-plugin>
@@ -384,6 +384,12 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase {
"myTag", "myTagWithoutAnnotation")
}
@SuppressWarnings("ComponentNotRegistered")
void testActionExtensionPointAttributeHighlighting() {
myFixture.addClass("package foo.bar; public class BarAction extends com.intellij.openapi.actionSystem.AnAction { }")
doHighlightingTest("actionExtensionPointAttribute.xml", "MyActionAttributeEPBean.java")
}
void testLanguageAttributeHighlighting() {
myFixture.allowTreeAccessForFile(myFixture.copyFileToProject("MyLanguage.java"))
doHighlightingTest("languageAttribute.xml", "MyLanguageAttributeEPBean.java")