diff --git a/src/main/java/org/jastadd/tooling/aspect/AspectBlock.java b/src/main/java/org/jastadd/tooling/aspect/AspectBlock.java index 409c55c1e4a80b0130d0e132312693b869784f84..7dc6b9a49cd8440e797af6d6053f5ffaec8dea7b 100644 --- a/src/main/java/org/jastadd/tooling/aspect/AspectBlock.java +++ b/src/main/java/org/jastadd/tooling/aspect/AspectBlock.java @@ -4,11 +4,13 @@ package org.jastadd.tooling.aspect; import com.intellij.formatting.*; import com.intellij.lang.ASTNode; import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiElement; import com.intellij.psi.TokenType; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.formatter.common.AbstractBlock; import com.intellij.psi.formatter.common.InjectedLanguageBlockBuilder; import com.intellij.psi.formatter.java.LeafBlock; +import com.intellij.psi.tree.IElementType; import org.jastadd.tooling.aspect.psi.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -32,7 +34,9 @@ public class AspectBlock extends AbstractBlock { @Override protected List<Block> buildChildren() { List<Block> blocks = new ArrayList<>(); - if (myNode.getPsi() instanceof JastAddAspectBlock) { + if (myNode.getPsi() instanceof JastAddAspectAspectClassDeclaration) { + myInjectedBlockBuilder.addInjectedBlocks(blocks, myNode, Wrap.createWrap(WrapType.NONE, false), null, Indent.getIndent(Indent.Type.NONE, false, true)); + } else if (myNode.getPsi() instanceof JastAddAspectBlock) { myInjectedBlockBuilder.addInjectedBlocks(blocks, myNode, Wrap.createWrap(WrapType.NONE, false), null, Indent.getIndent(Indent.Type.NONE, false, true)); } else { ASTNode child = myNode.getFirstChildNode(); @@ -49,12 +53,25 @@ public class AspectBlock extends AbstractBlock { @Override public Indent getIndent() { - - if (myNode.getTreeParent() != null && myNode.getTreeParent().getPsi() instanceof JastAddAspectAspectBody && myNode.getElementType() != AspectTypes.RBRACE) { - return Indent.getNormalIndent(); - } else { - return Indent.getNoneIndent(); + if (myNode.getTreeParent() != null) { + PsiElement parentPsi = myNode.getTreeParent().getPsi(); + IElementType childType = myNode.getElementType(); + if (parentPsi instanceof JastAddAspectAspectBody && childType != AspectTypes.RBRACE) { + return Indent.getNormalIndent(); + } else if (parentPsi instanceof JastAddAspectCollectionContribution && (childType == AspectTypes.WHEN || childType == AspectTypes.TO || childType == AspectTypes.FOR)) { + return Indent.getNormalIndent(); + } + ASTNode nonBlankSuccecssor = myNode.getTreePrev(); + while (nonBlankSuccecssor != null && nonBlankSuccecssor.getElementType() == TokenType.WHITE_SPACE) { + nonBlankSuccecssor = nonBlankSuccecssor.getTreePrev(); + } + if (nonBlankSuccecssor != null && nonBlankSuccecssor.getElementType() == AspectTypes.ASSIGN) { + return Indent.getContinuationIndent(); + } else if (nonBlankSuccecssor != null) { + //System.out.println(nonBlankSuccecssor.getElementType().getDebugName()); + } } + return Indent.getNoneIndent(); } @Nullable