java: IdeJavaFoldingBuilderBase on frontend (part of java folding builder which doesn't depend on resolve) IJPL-185110

GitOrigin-RevId: 1932afe8a0a18e0a475d047461bf5e158761e35a
This commit is contained in:
Dmitry Batkovich
2025-04-23 20:11:43 +00:00
committed by intellij-monorepo-bot
parent 3f520e829a
commit 210b056678
5 changed files with 40 additions and 27 deletions
@@ -64,6 +64,9 @@
<lang.lineWrapStrategy language="JAVA" implementationClass="com.intellij.psi.formatter.java.JavaLineWrapPositionStrategy"/>
<applicationService serviceInterface="com.intellij.codeInsight.folding.JavaCodeFoldingSettings"
serviceImplementation="com.intellij.codeInsight.folding.impl.JavaCodeFoldingSettingsImpl"/>
<registryKey key="java.formatter.chained.calls.pre212.compatibility"
defaultValue="false"
description="Format chained calls as in versions prior to 2021.2"/>
@@ -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, "->")
}
}
}
@@ -0,0 +1,22 @@
// Copyright 2000-2024 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.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.SettingsCategory;
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.util.xmlb.XmlSerializerUtil;
import org.jetbrains.annotations.NotNull;
@State(name = "JavaCodeFoldingSettings", storages = @Storage("editor.xml"), category = SettingsCategory.CODE)
public final class JavaCodeFoldingSettingsImpl extends JavaCodeFoldingSettingsBase implements PersistentStateComponent<JavaCodeFoldingSettingsImpl> {
@Override
public JavaCodeFoldingSettingsImpl getState() {
return this;
}
@Override
public void loadState(final @NotNull JavaCodeFoldingSettingsImpl state) {
XmlSerializerUtil.copyBean(state, this);
}
}