From 6c605dee7b1064bc8f42c8eb9db62d8b52a4d6a3 Mon Sep 17 00:00:00 2001
From: Johannes Mey <johannes.mey@tu-dresden.de>
Date: Tue, 30 Nov 2021 23:16:53 +0100
Subject: [PATCH] do not fold empty blocks

---
 .../tooling/aspect/AspectFoldingBuilder.java  | 40 ++++++++++++-------
 1 file changed, 25 insertions(+), 15 deletions(-)

diff --git a/src/main/java/org/jastadd/tooling/aspect/AspectFoldingBuilder.java b/src/main/java/org/jastadd/tooling/aspect/AspectFoldingBuilder.java
index 5e28dbf..abefa83 100644
--- a/src/main/java/org/jastadd/tooling/aspect/AspectFoldingBuilder.java
+++ b/src/main/java/org/jastadd/tooling/aspect/AspectFoldingBuilder.java
@@ -24,33 +24,43 @@ public class AspectFoldingBuilder extends FoldingBuilderEx {
     List<FoldingDescriptor> descriptors = new ArrayList<>();
     Collection<JastAddAspectAspectDeclaration> aspectDeclarations = PsiTreeUtil.findChildrenOfType(root, JastAddAspectAspectDeclaration.class);
     for (final JastAddAspectAspectDeclaration aspectDeclaration : aspectDeclarations) {
-      descriptors.add(new FoldingDescriptor(aspectDeclaration.getNode(),
-        new TextRange(aspectDeclaration.getAspectBody().getTextRange().getStartOffset() + 1,
-          aspectDeclaration.getAspectBody().getTextRange().getEndOffset() - 1)));
+      if (aspectDeclaration.getAspectBody().getTextRange().getLength() > 2) {
+        descriptors.add(new FoldingDescriptor(aspectDeclaration.getNode(),
+          new TextRange(aspectDeclaration.getAspectBody().getTextRange().getStartOffset() + 1,
+            aspectDeclaration.getAspectBody().getTextRange().getEndOffset() - 1)));
+      }
     }
     Collection<JastAddAspectClassDeclaration> classDeclarations = PsiTreeUtil.findChildrenOfType(root, JastAddAspectClassDeclaration.class);
     for (final JastAddAspectClassDeclaration classDeclaration : classDeclarations) {
-      descriptors.add(new FoldingDescriptor(classDeclaration.getNode(),
-        new TextRange(classDeclaration.getClassBody().getTextRange().getStartOffset() + 1,
-          classDeclaration.getClassBody().getTextRange().getEndOffset() - 1)));
+      if (classDeclaration.getClassBody().getTextRange().getLength() > 2) {
+        descriptors.add(new FoldingDescriptor(classDeclaration.getNode(),
+          new TextRange(classDeclaration.getClassBody().getTextRange().getStartOffset() + 1,
+            classDeclaration.getClassBody().getTextRange().getEndOffset() - 1)));
+      }
     }
     Collection<JastAddAspectEnumBody> enumBodies = PsiTreeUtil.findChildrenOfType(root, JastAddAspectEnumBody.class);
     for (final JastAddAspectEnumBody enumBody : enumBodies) {
-      descriptors.add(new FoldingDescriptor(enumBody.getNode(),
-        new TextRange(enumBody.getTextRange().getStartOffset() + 1,
-          enumBody.getTextRange().getEndOffset() - 1)));
+      if (enumBody.getTextRange().getLength() > 2) {
+        descriptors.add(new FoldingDescriptor(enumBody.getNode(),
+          new TextRange(enumBody.getTextRange().getStartOffset() + 1,
+            enumBody.getTextRange().getEndOffset() - 1)));
+      }
     }
     Collection<JastAddAspectAnnotationTypeBody> annotationTypeBodies = PsiTreeUtil.findChildrenOfType(root, JastAddAspectAnnotationTypeBody.class);
     for (final JastAddAspectAnnotationTypeBody annotationTypeBody : annotationTypeBodies) {
-      descriptors.add(new FoldingDescriptor(annotationTypeBody.getNode(),
-        new TextRange(annotationTypeBody.getTextRange().getStartOffset() + 1,
-          annotationTypeBody.getTextRange().getEndOffset() - 1)));
+      if (annotationTypeBody.getTextRange().getLength() > 2) {
+        descriptors.add(new FoldingDescriptor(annotationTypeBody.getNode(),
+          new TextRange(annotationTypeBody.getTextRange().getStartOffset() + 1,
+            annotationTypeBody.getTextRange().getEndOffset() - 1)));
+      }
     }
     Collection<JastAddAspectBlock> aspectBlocks = PsiTreeUtil.findChildrenOfType(root, JastAddAspectBlock.class);
     for (final JastAddAspectBlock block : aspectBlocks) {
-      descriptors.add(new FoldingDescriptor(block.getNode(),
-        new TextRange(block.getTextRange().getStartOffset() + 1,
-          block.getTextRange().getEndOffset() - 1)));
+      if (block.getTextRange().getLength() > 2) {
+        descriptors.add(new FoldingDescriptor(block.getNode(),
+          new TextRange(block.getTextRange().getStartOffset() + 1,
+            block.getTextRange().getEndOffset() - 1)));
+      }
     }
     return descriptors.toArray(new FoldingDescriptor[0]);
   }
-- 
GitLab