WEB-67976 Limit inlay hints margin change to only JS / TS

GitOrigin-RevId: e8268c53d1b08c2e3b1898e26546f9d6c61f9860
This commit is contained in:
Aleksei Berezkin
2024-07-11 20:38:11 +02:00
committed by intellij-monorepo-bot
parent 7474c73550
commit d9ae467dcd
4 changed files with 32 additions and 8 deletions

View File

@@ -1263,19 +1263,29 @@ e:com.intellij.codeInsight.hints.declarative.HintFontSize
- s:values():com.intellij.codeInsight.hints.declarative.HintFontSize[]
f:com.intellij.codeInsight.hints.declarative.HintFormat
- sf:Companion:com.intellij.codeInsight.hints.declarative.HintFormat$Companion
- <init>(com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.HintFontSize):V
- <init>(com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.HintFontSize,com.intellij.codeInsight.hints.declarative.HintMarginPadding):V
- f:component1():com.intellij.codeInsight.hints.declarative.HintColorKind
- f:component2():com.intellij.codeInsight.hints.declarative.HintFontSize
- f:copy(com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.HintFontSize):com.intellij.codeInsight.hints.declarative.HintFormat
- bs:copy$default(com.intellij.codeInsight.hints.declarative.HintFormat,com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.HintFontSize,I,java.lang.Object):com.intellij.codeInsight.hints.declarative.HintFormat
- f:component3():com.intellij.codeInsight.hints.declarative.HintMarginPadding
- f:copy(com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.HintFontSize,com.intellij.codeInsight.hints.declarative.HintMarginPadding):com.intellij.codeInsight.hints.declarative.HintFormat
- bs:copy$default(com.intellij.codeInsight.hints.declarative.HintFormat,com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.HintFontSize,com.intellij.codeInsight.hints.declarative.HintMarginPadding,I,java.lang.Object):com.intellij.codeInsight.hints.declarative.HintFormat
- equals(java.lang.Object):Z
- f:getColorKind():com.intellij.codeInsight.hints.declarative.HintColorKind
- f:getFontSize():com.intellij.codeInsight.hints.declarative.HintFontSize
- f:getHorizontalMarginPadding():com.intellij.codeInsight.hints.declarative.HintMarginPadding
- hashCode():I
- f:withColorKind(com.intellij.codeInsight.hints.declarative.HintColorKind):com.intellij.codeInsight.hints.declarative.HintFormat
- f:withFontSize(com.intellij.codeInsight.hints.declarative.HintFontSize):com.intellij.codeInsight.hints.declarative.HintFormat
- f:withHorizontalMargin(com.intellij.codeInsight.hints.declarative.HintMarginPadding):com.intellij.codeInsight.hints.declarative.HintFormat
f:com.intellij.codeInsight.hints.declarative.HintFormat$Companion
- f:getDefault():com.intellij.codeInsight.hints.declarative.HintFormat
e:com.intellij.codeInsight.hints.declarative.HintMarginPadding
- java.lang.Enum
- sf:MarginAndSmallerPadding:com.intellij.codeInsight.hints.declarative.HintMarginPadding
- sf:OnlyPadding:com.intellij.codeInsight.hints.declarative.HintMarginPadding
- s:getEntries():kotlin.enums.EnumEntries
- s:valueOf(java.lang.String):com.intellij.codeInsight.hints.declarative.HintMarginPadding
- s:values():com.intellij.codeInsight.hints.declarative.HintMarginPadding[]
f:com.intellij.codeInsight.hints.declarative.InlayActionData
- <init>(com.intellij.codeInsight.hints.declarative.InlayActionPayload,java.lang.String):V
- equals(java.lang.Object):Z

View File

@@ -4,16 +4,19 @@ package com.intellij.codeInsight.hints.declarative
data class HintFormat(
val colorKind: HintColorKind,
val fontSize: HintFontSize,
val horizontalMarginPadding: HintMarginPadding,
) {
companion object {
val default = HintFormat(
HintColorKind.Default,
HintFontSize.AsInEditor,
HintMarginPadding.OnlyPadding,
)
}
fun withColorKind(newColorKind: HintColorKind) = copy(colorKind = newColorKind)
fun withFontSize(newFontSize: HintFontSize) = copy(fontSize = newFontSize)
fun withHorizontalMargin(newHorizontalMarginPadding: HintMarginPadding) = copy(horizontalMarginPadding = newHorizontalMarginPadding)
}
/**
@@ -29,3 +32,8 @@ enum class HintFontSize {
AsInEditor,
ABitSmallerThanInEditor
}
enum class HintMarginPadding {
OnlyPadding,
MarginAndSmallerPadding,
}

View File

@@ -30,7 +30,7 @@ data class InlayData(
companion object {
// increment on format changed
private const val SERDE_VERSION = 5
private const val SERDE_VERSION = 6
}
override fun serdeVersion(): Int = SERDE_VERSION + treeExternalizer.serdeVersion()
@@ -40,6 +40,7 @@ data class InlayData(
writeTooltip(output, inlayData.tooltip)
output.writeUTF(inlayData.hintFormat.colorKind.name)
output.writeUTF(inlayData.hintFormat.fontSize.name)
output.writeUTF(inlayData.hintFormat.horizontalMarginPadding.name)
treeExternalizer.save(output, inlayData.tree)
writeUTF(output, inlayData.providerId)
output.writeBoolean(inlayData.disabled)
@@ -52,13 +53,14 @@ data class InlayData(
val tooltip: String? = readTooltip(input)
val hintColorKind: HintColorKind = HintColorKind.valueOf(input.readUTF())
val hintFontSize: HintFontSize = HintFontSize.valueOf(input.readUTF())
val hintHorizontalMarginPadding = HintMarginPadding.valueOf(input.readUTF())
val tree: TinyTree<Any?> = treeExternalizer.read(input)
val providerId: String = readUTF(input)
val disabled: Boolean = input.readBoolean()
val payloads: List<InlayPayload>? = readPayloads(input)
val providerClass: Class<*> = ZombieInlayHintsProvider::class.java
val sourceId: String = readSourceId(input)
return InlayData(position, tooltip, HintFormat(hintColorKind, hintFontSize), tree, providerId, disabled, payloads, providerClass, sourceId)
return InlayData(position, tooltip, HintFormat(hintColorKind, hintFontSize, hintHorizontalMarginPadding), tree, providerId, disabled, payloads, providerClass, sourceId)
}
private fun writePosition(output: DataOutput, position: InlayPosition) {

View File

@@ -16,6 +16,7 @@ import com.intellij.openapi.editor.markup.TextAttributes
import com.intellij.openapi.util.NlsContexts
import com.intellij.ui.LightweightHint
import com.intellij.util.concurrency.annotations.RequiresEdt
import com.intellij.util.containers.enumMapOf
import com.intellij.util.ui.GraphicsUtil
import com.intellij.util.ui.withTranslated
import org.jetbrains.annotations.TestOnly
@@ -37,8 +38,10 @@ class InlayPresentationList(
) {
companion object {
private val NOT_COMPUTED = DeclarativeHintWidth(-1, -1, -1)
private const val HORIZONTAL_PADDING = 6
private const val HORIZONTAL_MARGIN = 2
private val MARGIN_PADDING_BY_FORMAT = enumMapOf<HintMarginPadding, Pair<Int, Int>>().apply {
put(HintMarginPadding.OnlyPadding, 0 to 7)
put(HintMarginPadding.MarginAndSmallerPadding, 2 to 6)
}
private const val ARC_WIDTH = 8
private const val ARC_HEIGHT = 8
private const val BACKGROUND_ALPHA: Float = 0.55f
@@ -153,7 +156,8 @@ class InlayPresentationList(
size = metrics.font.size2D
fontName = metrics.font.family
val textWidth = entries.sumOf { it.computeWidth(metrics) }
computedWidth = DeclarativeHintWidth(HORIZONTAL_MARGIN, HORIZONTAL_PADDING, textWidth)
val (margin, padding) = MARGIN_PADDING_BY_FORMAT[hintFormat.horizontalMarginPadding]!!
computedWidth = DeclarativeHintWidth(margin, padding, textWidth)
return computedWidth
}
return computedWidth