diff --git a/CHANGELOG.md b/CHANGELOG.md index 00613e26a76858b58571ac89adcd2fb84736b870..d5c867b8cbe4f311db7ac3ac1304278e2366d0bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ ### Added - Support for IntelliJ IDEA 2021.2.3. - Initial support for JastAdd aspect files. + - syntax highlighter and color settings + - two file types for jrag and jadd + - embedded java for attribute equation blocks ### Changed diff --git a/src/main/grammar/Aspect.bnf b/src/main/grammar/Aspect.bnf index c471de69d420629910b673c403102346fda4d903..da2d4a51a058d6cc0214a78e0ba613e3b1b85c9f 100644 --- a/src/main/grammar/Aspect.bnf +++ b/src/main/grammar/Aspect.bnf @@ -33,8 +33,8 @@ // //java_block ::= JAVABLOCK //{ -// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension" -// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension" +// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" +// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" //} // aspect_body_declarations_eof ::= aspect_body_declaration* EOF @@ -278,8 +278,8 @@ annotation ::= ( normal_annotation | single_member_annotation | marker_annotatio //class_body_declaration_in_paren ::= JAVA_IN_PAREN //{ -// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension" -// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension" +// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" +// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" //} // should be parsed after circular and in collection attributes @@ -303,6 +303,10 @@ enum_declaration ::= ENUM_ANYTHING_LBRACE_ANYTHING_RBRACE // ENUM java_identifie // only within attribute equations block ::= LBRACE_ANYTHING_RBRACE +{ + implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" + extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" +} // TODO unsupported diff --git a/src/main/java/org/jastadd/tooling/aspect/JavaBlockLanguageInjector.java b/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java similarity index 93% rename from src/main/java/org/jastadd/tooling/aspect/JavaBlockLanguageInjector.java rename to src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java index 609f83528ec73a718569295fc67a166e571376f5..b07e71120c9009083ea979d5470f9abd8113a8a3 100644 --- a/src/main/java/org/jastadd/tooling/aspect/JavaBlockLanguageInjector.java +++ b/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java @@ -9,7 +9,7 @@ import com.intellij.psi.PsiLanguageInjectionHost; import org.jastadd.tooling.aspect.psi.*; import org.jetbrains.annotations.NotNull; -public class JavaBlockLanguageInjector implements LanguageInjector { +public class JavaLanguageInjector implements LanguageInjector { /** * @param host PSI element inside which your language will be injected. @@ -24,7 +24,6 @@ public class JavaBlockLanguageInjector implements LanguageInjector { if (host.isValidHost()) { if (host instanceof JastAddAspectExpressionInBrackets) { // TODO - injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m(){", "}"); } else if (host instanceof JastAddAspectNormalAnnotation) { // TODO } else if (host instanceof JastAddAspectSingleMemberAnnotation) { @@ -37,6 +36,8 @@ public class JavaBlockLanguageInjector implements LanguageInjector { // TODO } else if (host instanceof JastAddAspectAnnotationTypeDeclaration) { // TODO + } else if (host instanceof JastAddAspectBlock) { + injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m()", "}"); } } } diff --git a/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaBlockExtension.java b/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaBlockExtension.java deleted file mode 100644 index 75b2f3ee760135993ff2094e6bcc3a473c968e63..0000000000000000000000000000000000000000 --- a/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaBlockExtension.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.jastadd.tooling.aspect.psi; - -public interface JastAddAspectJavaBlockExtension extends com.intellij.psi.PsiLanguageInjectionHost { -} diff --git a/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaExtension.java b/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaExtension.java new file mode 100644 index 0000000000000000000000000000000000000000..31d489039d5c3a345a8075953a4797dd552e448a --- /dev/null +++ b/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaExtension.java @@ -0,0 +1,4 @@ +package org.jastadd.tooling.aspect.psi; + +public interface JastAddAspectJavaExtension extends com.intellij.psi.PsiLanguageInjectionHost { +} diff --git a/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaBlockImplExtension.java b/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaImplExtension.java similarity index 76% rename from src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaBlockImplExtension.java rename to src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaImplExtension.java index f1a19e09f95395b05db82bcc3e33e0db00279cf0..f29d91a3bc82d06fc6b0732c373c90fe767610d4 100644 --- a/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaBlockImplExtension.java +++ b/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaImplExtension.java @@ -2,15 +2,13 @@ package org.jastadd.tooling.aspect.psi.impl; import com.intellij.extapi.psi.ASTWrapperPsiElement; import com.intellij.lang.ASTNode; -import com.intellij.psi.LiteralTextEscaper; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiLanguageInjectionHost; -import org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension; +import com.intellij.psi.*; +import org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension; import org.jetbrains.annotations.NotNull; -public class JastAddAspectJavaBlockImplExtension extends ASTWrapperPsiElement implements JastAddAspectJavaBlockExtension { +public class JastAddAspectJavaImplExtension extends ASTWrapperPsiElement implements JastAddAspectJavaExtension { - public JastAddAspectJavaBlockImplExtension(@NotNull ASTNode node) { + public JastAddAspectJavaImplExtension(@NotNull ASTNode node) { super(node); } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 43ea39d21e55eef0f5175ca2aec8dac64a4a6af9..93ed476fbc164fd7d666d62428724d143a1e60ae 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -67,7 +67,7 @@ <lang.parserDefinition language="JastAddAspect" implementationClass="org.jastadd.tooling.aspect.parser.AspectParserDefinition"/> - <languageInjector implementation="org.jastadd.tooling.aspect.JavaBlockLanguageInjector"/> + <languageInjector implementation="org.jastadd.tooling.aspect.JavaLanguageInjector"/> <lang.syntaxHighlighterFactory language="JastAddAspect" implementationClass="org.jastadd.tooling.aspect.AspectSyntaxHighlighterFactory"/>