package org.jetbrains.plugins.clojure.formatter.processors; import com.intellij.formatting.Indent; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; import com.intellij.psi.tree.TokenSet; import org.jetbrains.plugins.clojure.formatter.ClojureBlock; import org.jetbrains.plugins.clojure.parser.ClojureElementTypes; import org.jetbrains.plugins.clojure.psi.api.ClojureFile; /** * @author ilyas */ public class ClojureIndentProcessor implements ClojureElementTypes{ public static Indent getChildIndent(ClojureBlock parent, ASTNode prevChildNode, ASTNode child) { ASTNode astNode = parent.getNode(); final PsiElement psiParent = astNode.getPsi(); // For Groovy file if (psiParent instanceof ClojureFile) { return Indent.getNoneIndent(); } ASTNode node = parent.getNode(); final TokenSet L_BRACES = TokenSet.create(LEFT_CURLY, LEFT_PAREN, LEFT_SQUARE); if (LIST_LIKE_FORMS.contains(node.getElementType())) { if (L_BRACES.contains(child.getElementType())) { return Indent.getNoneIndent(); } else { return Indent.getNormalIndent(true); } } return Indent.getNoneIndent(); } }