From e66f452e0d1d04cc52a53a87fc7c45781a12efc7 Mon Sep 17 00:00:00 2001 From: XLor Date: Tue, 17 Oct 2023 21:53:59 +0800 Subject: [PATCH] feat: fold method body --- CHANGELOG.md | 1 + .../intellij/tir/editing/TirFoldingBuilder.kt | 29 +++++++++++++++++++ src/main/resources/META-INF/plugin.xml | 3 ++ 3 files changed, 33 insertions(+) create mode 100644 src/main/kotlin/pascal/taie/intellij/tir/editing/TirFoldingBuilder.kt diff --git a/CHANGELOG.md b/CHANGELOG.md index 591e54e..1d0fb73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Support invoke dynamic stmt - Support monitor stmts +- Fold method body ## [0.1.2] - 2023-10-16 diff --git a/src/main/kotlin/pascal/taie/intellij/tir/editing/TirFoldingBuilder.kt b/src/main/kotlin/pascal/taie/intellij/tir/editing/TirFoldingBuilder.kt new file mode 100644 index 0000000..9737fd1 --- /dev/null +++ b/src/main/kotlin/pascal/taie/intellij/tir/editing/TirFoldingBuilder.kt @@ -0,0 +1,29 @@ +package pascal.taie.intellij.tir.editing + +import com.intellij.lang.ASTNode +import com.intellij.lang.folding.FoldingBuilderEx +import com.intellij.lang.folding.FoldingDescriptor +import com.intellij.openapi.editor.Document +import com.intellij.openapi.project.DumbAware +import com.intellij.psi.PsiElement +import com.intellij.psi.SyntaxTraverser +import pascal.taie.intellij.tir.syntax.psi.TirMethodBody + +class TirFoldingBuilder : FoldingBuilderEx(), DumbAware { + override fun buildFoldRegions( + root: PsiElement, document: Document, quick: Boolean + ) = SyntaxTraverser + .psiTraverser(root) + .filter { it is TirMethodBody } + .map { TirFoldingDescriptor(it, "{…}") } + .toList().toTypedArray() + + override fun getPlaceholderText(node: ASTNode) = "…" + + override fun isCollapsedByDefault(node: ASTNode) = false + + class TirFoldingDescriptor(element: PsiElement, private val holder: String) : + FoldingDescriptor(element.node, element.textRange) { + override fun getPlaceholderText() = holder + } +} \ No newline at end of file diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 3ca0ef5..b649659 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -35,6 +35,9 @@ +