fix: Better indenting logic

This commit is contained in:
FalsePattern 2024-03-15 00:47:38 +01:00
parent 6cc6a00aeb
commit a266ff94c3
Signed by: falsepattern
GPG key ID: E930CDEC50C50E23

View file

@ -26,12 +26,18 @@ import com.intellij.formatting.Wrap;
import com.intellij.lang.ASTNode;
import com.intellij.psi.TokenType;
import com.intellij.psi.formatter.common.AbstractBlock;
import com.intellij.psi.tree.IElementType;
import lombok.val;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
import static com.falsepattern.zigbrains.zig.psi.ZigTypes.BLOCK;
import static com.falsepattern.zigbrains.zig.psi.ZigTypes.EXPR_LIST;
import static com.falsepattern.zigbrains.zig.psi.ZigTypes.INIT_LIST;
public class ZigBlock extends AbstractBlock {
private final SpacingBuilder spacingBuilder;
@ -69,16 +75,22 @@ public class ZigBlock extends AbstractBlock {
@Override
protected @Nullable Indent getChildIndent() {
if (myNode.getElementType() == ZigTypes.BLOCK) {
return Indent.getNormalIndent();
}
return Indent.getNoneIndent();
return getIndentBasedOnParentType(getNode().getElementType());
}
@Override
public Indent getIndent() {
if (myNode.getElementType() == ZigTypes.STATEMENT) {
val parent = getNode().getTreeParent();
if (parent != null) {
return getIndentBasedOnParentType(parent.getElementType());
}
return Indent.getNoneIndent();
}
private static Indent getIndentBasedOnParentType(IElementType elementType) {
if (elementType == BLOCK ||
elementType == INIT_LIST ||
elementType == EXPR_LIST) {
return Indent.getNormalIndent();
}