From 210b05667819f25400ea9b8a71dbcdcadd83cdf3 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Wed, 23 Apr 2025 16:15:28 +0200 Subject: [PATCH] java: IdeJavaFoldingBuilderBase on frontend (part of java folding builder which doesn't depend on resolve) IJPL-185110 GitOrigin-RevId: 1932afe8a0a18e0a475d047461bf5e158761e35a --- .../resource/intellij.java.frontback.impl.xml | 3 ++ .../folding/impl/IdeJavaFoldingBuilderBase.kt | 33 +++++++++++++++++++ .../impl/JavaCodeFoldingSettingsImpl.java | 0 .../resources/META-INF/JavaPlugin.xml | 2 -- .../folding/impl/JavaFoldingBuilder.java | 29 +++------------- 5 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 java/java-frontback-impl/src/com/intellij/codeInsight/folding/impl/IdeJavaFoldingBuilderBase.kt rename java/{java-impl => java-frontback-impl}/src/com/intellij/codeInsight/folding/impl/JavaCodeFoldingSettingsImpl.java (100%) diff --git a/java/java-frontback-impl/resource/intellij.java.frontback.impl.xml b/java/java-frontback-impl/resource/intellij.java.frontback.impl.xml index 9dc89fb9e38c..10372fdf52a0 100644 --- a/java/java-frontback-impl/resource/intellij.java.frontback.impl.xml +++ b/java/java-frontback-impl/resource/intellij.java.frontback.impl.xml @@ -64,6 +64,9 @@ + + diff --git a/java/java-frontback-impl/src/com/intellij/codeInsight/folding/impl/IdeJavaFoldingBuilderBase.kt b/java/java-frontback-impl/src/com/intellij/codeInsight/folding/impl/IdeJavaFoldingBuilderBase.kt new file mode 100644 index 000000000000..c6bec292cadf --- /dev/null +++ b/java/java-frontback-impl/src/com/intellij/codeInsight/folding/impl/IdeJavaFoldingBuilderBase.kt @@ -0,0 +1,33 @@ +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.codeInsight.folding.impl + +import com.intellij.lang.java.JavaLanguage +import com.intellij.openapi.editor.colors.EditorColors +import com.intellij.openapi.editor.ex.util.EditorUtil +import com.intellij.psi.* +import com.intellij.psi.codeStyle.CodeStyleSettings +import org.jetbrains.annotations.ApiStatus + +@ApiStatus.Internal +open class IdeJavaFoldingBuilderBase: JavaFoldingBuilderBase() { + override fun isBelowRightMargin(file: PsiFile, lineLength: Int): Boolean { + val settings: CodeStyleSettings = com.intellij.application.options.CodeStyle.getSettings(file) + return lineLength <= settings.getRightMargin(JavaLanguage.INSTANCE) + } + + protected open override fun shouldShowExplicitLambdaType(anonymousClass: PsiAnonymousClass, expression: PsiNewExpression): Boolean { + val parent = expression.getParent() + return parent is PsiReferenceExpression || parent is PsiAssignmentExpression + } + + protected override fun rightArrow(): String { + return getRightArrow() + } + + companion object { + @JvmStatic + fun getRightArrow(): String { + return EditorUtil.displayCharInEditor('\u2192', EditorColors.FOLDED_TEXT_ATTRIBUTES, "->") + } + } +} \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/codeInsight/folding/impl/JavaCodeFoldingSettingsImpl.java b/java/java-frontback-impl/src/com/intellij/codeInsight/folding/impl/JavaCodeFoldingSettingsImpl.java similarity index 100% rename from java/java-impl/src/com/intellij/codeInsight/folding/impl/JavaCodeFoldingSettingsImpl.java rename to java/java-frontback-impl/src/com/intellij/codeInsight/folding/impl/JavaCodeFoldingSettingsImpl.java diff --git a/java/java-impl/resources/META-INF/JavaPlugin.xml b/java/java-impl/resources/META-INF/JavaPlugin.xml index 4230309f5545..118d0babb08c 100644 --- a/java/java-impl/resources/META-INF/JavaPlugin.xml +++ b/java/java-impl/resources/META-INF/JavaPlugin.xml @@ -400,8 +400,6 @@ - "); - } }