Skip to content

Commit

Permalink
Added code folding for <% %> and { }
Browse files Browse the repository at this point in the history
  • Loading branch information
bjansen committed Jun 12, 2020
1 parent f054655 commit 1e4b5bb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pluginVersion=0.7
pluginVersion=0.8-SNAPSHOT

# e.g. IC-2016.3.3, IU-2018.2.5 etc
# For a list of possible values, refer to the section 'com.jetbrains.intellij.idea' at https://www.jetbrains.com/intellij-repository/releases
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.PsiTreeUtil;
import org.antlr.jetbrains.st4plugin.parsing.STGLexer;
import org.antlr.jetbrains.st4plugin.parsing.STGParser;
Expand Down Expand Up @@ -36,11 +37,20 @@ protected void buildLanguageFoldRegions(@NotNull List<FoldingDescriptor> descrip
private void foldTemplates(List<FoldingDescriptor> descriptors, PsiElement root) {
PsiTreeUtil.processElements(root, element -> {
if (element.getNode().getElementType() == getRuleElementType(STGParser.RULE_template)) {
ASTNode bigString = element.getNode().findChildByType(getTokenElementType(STGLexer.BIGSTRING));
ASTNode bigString = element.getNode().findChildByType(TokenSet.create(
getTokenElementType(STGLexer.BIGSTRING),
getTokenElementType(STGLexer.BIGSTRING_NO_NL)
));

if (bigString != null) {
descriptors.add(new FoldingDescriptor(bigString, bigString.getTextRange()));
}
} else if (element.getNode().getElementType() == getRuleElementType(STGParser.RULE_formalArg)) {
ASTNode template = element.getNode().findChildByType(getTokenElementType(STGLexer.ANON_TEMPLATE));

if (template != null) {
descriptors.add(new FoldingDescriptor(template, template.getTextRange()));
}
}

return true;
Expand Down Expand Up @@ -80,6 +90,10 @@ private void foldComments(List<FoldingDescriptor> descriptors, PsiElement root)
protected String getLanguagePlaceholderText(@NotNull ASTNode node, @NotNull TextRange range) {
if (node.getElementType() == getTokenElementType(STGLexer.BIGSTRING)) {
return "<<...>>";
} else if (node.getElementType() == getTokenElementType(STGLexer.BIGSTRING_NO_NL)) {
return "<%...%>";
} else if (node.getElementType() == getTokenElementType(STGLexer.ANON_TEMPLATE)) {
return "{...}";
} else if (node.getElementType() == getRuleElementType(STGParser.RULE_dict)) {
return "[...]";
} else if (node.getElementType() == getTokenElementType(STGLexer.DOC_COMMENT)) {
Expand Down

0 comments on commit 1e4b5bb

Please sign in to comment.