mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
WEB-67976 Fixed size and margins of hints in JS / TS
GitOrigin-RevId: d3eca9bfc99645acce41082b6b1494d3e0d72e49
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b3ecaee10d
commit
45d568dda4
@@ -1254,6 +1254,28 @@ e:com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
- f:hasBackground():Z
|
||||
- s:valueOf(java.lang.String):com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
- s:values():com.intellij.codeInsight.hints.declarative.HintColorKind[]
|
||||
e:com.intellij.codeInsight.hints.declarative.HintFontSize
|
||||
- java.lang.Enum
|
||||
- sf:ABitSmallerThanInEditor:com.intellij.codeInsight.hints.declarative.HintFontSize
|
||||
- sf:AsInEditor:com.intellij.codeInsight.hints.declarative.HintFontSize
|
||||
- s:getEntries():kotlin.enums.EnumEntries
|
||||
- s:valueOf(java.lang.String):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
|
||||
- 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
|
||||
- equals(java.lang.Object):Z
|
||||
- f:getColorKind():com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
- f:getFontSize():com.intellij.codeInsight.hints.declarative.HintFontSize
|
||||
- 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:com.intellij.codeInsight.hints.declarative.HintFormat$Companion
|
||||
- f:getDefault():com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
f:com.intellij.codeInsight.hints.declarative.InlayActionData
|
||||
- <init>(com.intellij.codeInsight.hints.declarative.InlayActionPayload,java.lang.String):V
|
||||
- equals(java.lang.Object):Z
|
||||
@@ -1387,9 +1409,9 @@ f:com.intellij.codeInsight.hints.declarative.InlayProviderPassInfo
|
||||
- f:getProvider():com.intellij.codeInsight.hints.declarative.InlayHintsProvider
|
||||
- f:getProviderId():java.lang.String
|
||||
com.intellij.codeInsight.hints.declarative.InlayTreeSink
|
||||
- a:addPresentation(com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,com.intellij.codeInsight.hints.declarative.HintColorKind,kotlin.jvm.functions.Function1):V
|
||||
- a:addPresentation(com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,com.intellij.codeInsight.hints.declarative.HintFormat,kotlin.jvm.functions.Function1):V
|
||||
- addPresentation(com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,Z,kotlin.jvm.functions.Function1):V
|
||||
- bs:addPresentation$default(com.intellij.codeInsight.hints.declarative.InlayTreeSink,com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,com.intellij.codeInsight.hints.declarative.HintColorKind,kotlin.jvm.functions.Function1,I,java.lang.Object):V
|
||||
- bs:addPresentation$default(com.intellij.codeInsight.hints.declarative.InlayTreeSink,com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,com.intellij.codeInsight.hints.declarative.HintFormat,kotlin.jvm.functions.Function1,I,java.lang.Object):V
|
||||
- bs:addPresentation$default(com.intellij.codeInsight.hints.declarative.InlayTreeSink,com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,Z,kotlin.jvm.functions.Function1,I,java.lang.Object):V
|
||||
- a:whenOptionEnabled(java.lang.String,kotlin.jvm.functions.Function0):V
|
||||
f:com.intellij.codeInsight.hints.declarative.InlineInlayPosition
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
// 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.hints.declarative
|
||||
|
||||
/**
|
||||
* Editor | Color Scheme | Language Defaults | Inline hints
|
||||
*/
|
||||
enum class HintColorKind {
|
||||
Default, Parameter, TextWithoutBackground;
|
||||
|
||||
fun hasBackground() = this != TextWithoutBackground
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
// 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.hints.declarative
|
||||
|
||||
data class HintFormat(
|
||||
val colorKind: HintColorKind,
|
||||
val fontSize: HintFontSize,
|
||||
) {
|
||||
companion object {
|
||||
val default = HintFormat(
|
||||
HintColorKind.Default,
|
||||
HintFontSize.AsInEditor,
|
||||
)
|
||||
}
|
||||
|
||||
fun withColorKind(newColorKind: HintColorKind) = copy(colorKind = newColorKind)
|
||||
fun withFontSize(newFontSize: HintFontSize) = copy(fontSize = newFontSize)
|
||||
}
|
||||
|
||||
/**
|
||||
* Editor | Color Scheme | Language Defaults | Inline hints
|
||||
*/
|
||||
enum class HintColorKind {
|
||||
Default, Parameter, TextWithoutBackground;
|
||||
|
||||
fun hasBackground() = this != TextWithoutBackground
|
||||
}
|
||||
|
||||
enum class HintFontSize {
|
||||
AsInEditor,
|
||||
ABitSmallerThanInEditor
|
||||
}
|
||||
@@ -14,7 +14,7 @@ interface InlayTreeSink {
|
||||
addPresentation(position,
|
||||
payloads,
|
||||
tooltip,
|
||||
if (hasBackground) HintColorKind.Default else HintColorKind.TextWithoutBackground,
|
||||
if (hasBackground) HintFormat.default else HintFormat.default.withColorKind(HintColorKind.TextWithoutBackground),
|
||||
builder)
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ interface InlayTreeSink {
|
||||
fun addPresentation(position: InlayPosition,
|
||||
payloads: List<InlayPayload>? = null,
|
||||
tooltip: String? = null,
|
||||
hintColorKind: HintColorKind,
|
||||
hintFormat: HintFormat,
|
||||
builder: PresentationTreeBuilder.() -> Unit)
|
||||
|
||||
/**
|
||||
|
||||
@@ -6458,6 +6458,7 @@ a:com.intellij.codeInsight.hints.chain.AbstractDeclarativeCallChainProvider
|
||||
- pa:buildTree(java.lang.Object,com.intellij.psi.PsiElement,com.intellij.openapi.project.Project,java.lang.Object,com.intellij.codeInsight.hints.declarative.PresentationTreeBuilder):V
|
||||
- createCollector(com.intellij.psi.PsiFile,com.intellij.openapi.editor.Editor):com.intellij.codeInsight.hints.declarative.InlayHintsCollector
|
||||
- pa:getDotQualifiedClass():java.lang.Class
|
||||
- p:getHintFormat():com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
- pa:getParentDotQualifiedExpression(com.intellij.psi.PsiElement):com.intellij.psi.PsiElement
|
||||
- pa:getReceiver(com.intellij.psi.PsiElement):com.intellij.psi.PsiElement
|
||||
- pa:getType(com.intellij.psi.PsiElement,java.lang.Object):java.lang.Object
|
||||
@@ -6663,23 +6664,23 @@ f:com.intellij.codeInsight.hints.declarative.impl.DeclarativeInlayRenderer
|
||||
- f:handleRightClick(com.intellij.openapi.editor.event.EditorMouseEvent):V
|
||||
- paint(com.intellij.openapi.editor.Inlay,java.awt.Graphics2D,java.awt.geom.Rectangle2D,com.intellij.openapi.editor.markup.TextAttributes):V
|
||||
- f:setInlay(com.intellij.openapi.editor.Inlay):V
|
||||
- f:updateState(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,Z,com.intellij.codeInsight.hints.declarative.HintColorKind):V
|
||||
- f:updateState(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,Z,com.intellij.codeInsight.hints.declarative.HintFormat):V
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.InlayData
|
||||
- <init>(com.intellij.codeInsight.hints.declarative.InlayPosition,java.lang.String,com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,java.lang.String,Z,java.util.List,java.lang.Class,java.lang.String):V
|
||||
- <init>(com.intellij.codeInsight.hints.declarative.InlayPosition,java.lang.String,com.intellij.codeInsight.hints.declarative.HintFormat,com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,java.lang.String,Z,java.util.List,java.lang.Class,java.lang.String):V
|
||||
- f:component1():com.intellij.codeInsight.hints.declarative.InlayPosition
|
||||
- f:component2():java.lang.String
|
||||
- f:component3():com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
- f:component3():com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
- f:component4():com.intellij.codeInsight.hints.declarative.impl.util.TinyTree
|
||||
- f:component5():java.lang.String
|
||||
- f:component6():Z
|
||||
- f:component7():java.util.List
|
||||
- f:component8():java.lang.Class
|
||||
- f:component9():java.lang.String
|
||||
- f:copy(com.intellij.codeInsight.hints.declarative.InlayPosition,java.lang.String,com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,java.lang.String,Z,java.util.List,java.lang.Class,java.lang.String):com.intellij.codeInsight.hints.declarative.impl.InlayData
|
||||
- bs:copy$default(com.intellij.codeInsight.hints.declarative.impl.InlayData,com.intellij.codeInsight.hints.declarative.InlayPosition,java.lang.String,com.intellij.codeInsight.hints.declarative.HintColorKind,com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,java.lang.String,Z,java.util.List,java.lang.Class,java.lang.String,I,java.lang.Object):com.intellij.codeInsight.hints.declarative.impl.InlayData
|
||||
- f:copy(com.intellij.codeInsight.hints.declarative.InlayPosition,java.lang.String,com.intellij.codeInsight.hints.declarative.HintFormat,com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,java.lang.String,Z,java.util.List,java.lang.Class,java.lang.String):com.intellij.codeInsight.hints.declarative.impl.InlayData
|
||||
- bs:copy$default(com.intellij.codeInsight.hints.declarative.impl.InlayData,com.intellij.codeInsight.hints.declarative.InlayPosition,java.lang.String,com.intellij.codeInsight.hints.declarative.HintFormat,com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,java.lang.String,Z,java.util.List,java.lang.Class,java.lang.String,I,java.lang.Object):com.intellij.codeInsight.hints.declarative.impl.InlayData
|
||||
- equals(java.lang.Object):Z
|
||||
- f:getDisabled():Z
|
||||
- f:getHintColorKind():com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
- f:getHintFormat():com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
- f:getPayloads():java.util.List
|
||||
- f:getPosition():com.intellij.codeInsight.hints.declarative.InlayPosition
|
||||
- f:getProviderClass():java.lang.Class
|
||||
@@ -6702,23 +6703,32 @@ f:com.intellij.codeInsight.hints.declarative.impl.InlayMouseArea
|
||||
- f:getEntries():java.util.List
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList
|
||||
- sf:Companion:com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList$Companion
|
||||
- <init>(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,com.intellij.codeInsight.hints.declarative.HintColorKind,Z,java.util.Map,java.lang.Class,java.lang.String,java.lang.String):V
|
||||
- b:<init>(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,com.intellij.codeInsight.hints.declarative.HintColorKind,Z,java.util.Map,java.lang.Class,java.lang.String,java.lang.String,I,kotlin.jvm.internal.DefaultConstructorMarker):V
|
||||
- <init>(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,com.intellij.codeInsight.hints.declarative.HintFormat,Z,java.util.Map,java.lang.Class,java.lang.String,java.lang.String):V
|
||||
- b:<init>(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,com.intellij.codeInsight.hints.declarative.HintFormat,Z,java.util.Map,java.lang.Class,java.lang.String,java.lang.String,I,kotlin.jvm.internal.DefaultConstructorMarker):V
|
||||
- f:getEntries():com.intellij.codeInsight.hints.declarative.impl.InlayPresentationEntry[]
|
||||
- f:getHintColorKind():com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
- f:getHintFormat():com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
- f:getMouseArea(java.awt.Point,com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage):com.intellij.codeInsight.hints.declarative.impl.InlayMouseArea
|
||||
- f:getPayloads():java.util.Map
|
||||
- f:getWidthInPixels(com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage):I
|
||||
- f:getWidthInPixels(com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage):com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList$DeclarativeHintWidth
|
||||
- f:handleClick(com.intellij.openapi.editor.event.EditorMouseEvent,java.awt.Point,com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage,Z):V
|
||||
- f:handleHover(com.intellij.openapi.editor.event.EditorMouseEvent):com.intellij.ui.LightweightHint
|
||||
- f:isDisabled():Z
|
||||
- f:paint(com.intellij.openapi.editor.Inlay,java.awt.Graphics2D,java.awt.geom.Rectangle2D,com.intellij.openapi.editor.markup.TextAttributes):V
|
||||
- f:setDisabled(Z):V
|
||||
- f:setHintColorKind(com.intellij.codeInsight.hints.declarative.HintColorKind):V
|
||||
- f:setHintFormat(com.intellij.codeInsight.hints.declarative.HintFormat):V
|
||||
- f:setPayloads(java.util.Map):V
|
||||
- f:toggleTreeState(B):V
|
||||
- f:updateState(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,Z,com.intellij.codeInsight.hints.declarative.HintColorKind):V
|
||||
- f:updateState(com.intellij.codeInsight.hints.declarative.impl.util.TinyTree,Z,com.intellij.codeInsight.hints.declarative.HintFormat):V
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList$Companion
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList$DeclarativeHintWidth
|
||||
- <init>(I,I,I):V
|
||||
- f:copy(I,I,I):com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList$DeclarativeHintWidth
|
||||
- bs:copy$default(com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList$DeclarativeHintWidth,I,I,I,I,java.lang.Object):com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList$DeclarativeHintWidth
|
||||
- equals(java.lang.Object):Z
|
||||
- f:getBoxWidth():I
|
||||
- f:getFullWidth():I
|
||||
- f:getMarginAndPadding():I
|
||||
- hashCode():I
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.InlayTags
|
||||
- sf:CLICK_HANDLER_SCOPE_TAG:B
|
||||
- sf:COLLAPSE_BUTTON_TAG:B
|
||||
@@ -6735,7 +6745,7 @@ f:com.intellij.codeInsight.hints.declarative.impl.InlayTags
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.InlayTreeSinkImpl
|
||||
- com.intellij.codeInsight.hints.declarative.InlayTreeSink
|
||||
- <init>(java.lang.String,java.util.Map,Z,Z,java.lang.Class,java.lang.String):V
|
||||
- addPresentation(com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,com.intellij.codeInsight.hints.declarative.HintColorKind,kotlin.jvm.functions.Function1):V
|
||||
- addPresentation(com.intellij.codeInsight.hints.declarative.InlayPosition,java.util.List,java.lang.String,com.intellij.codeInsight.hints.declarative.HintFormat,kotlin.jvm.functions.Function1):V
|
||||
- f:finish():java.util.List
|
||||
- whenOptionEnabled(java.lang.String,kotlin.jvm.functions.Function0):V
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.PresentationEntryBuilder
|
||||
@@ -6759,13 +6769,13 @@ f:com.intellij.codeInsight.hints.declarative.impl.PresentationTreeBuilderImpl$Co
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.TextInlayPresentationEntry
|
||||
- <init>(java.lang.String,B,com.intellij.codeInsight.hints.declarative.impl.InlayMouseArea):V
|
||||
- b:<init>(java.lang.String,B,com.intellij.codeInsight.hints.declarative.impl.InlayMouseArea,I,kotlin.jvm.internal.DefaultConstructorMarker):V
|
||||
- computeHeight(com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage):I
|
||||
- computeWidth(com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage):I
|
||||
- computeHeight(com.intellij.codeInsight.hints.presentation.InlayTextMetrics):I
|
||||
- computeWidth(com.intellij.codeInsight.hints.presentation.InlayTextMetrics):I
|
||||
- equals(java.lang.Object):Z
|
||||
- f:getText():java.lang.String
|
||||
- handleClick(com.intellij.openapi.editor.Editor,com.intellij.codeInsight.hints.declarative.impl.InlayPresentationList,Z):V
|
||||
- hashCode():I
|
||||
- render(java.awt.Graphics2D,com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage,com.intellij.openapi.editor.markup.TextAttributes,Z,I,I,com.intellij.openapi.editor.Editor):V
|
||||
- render(java.awt.Graphics2D,com.intellij.codeInsight.hints.presentation.InlayTextMetrics,com.intellij.openapi.editor.markup.TextAttributes,Z,I,I,com.intellij.openapi.editor.Editor):V
|
||||
f:com.intellij.codeInsight.hints.declarative.impl.toggle.DeclarativeHintsTogglingIntention
|
||||
- com.intellij.codeInsight.intention.IntentionAction
|
||||
- com.intellij.codeInsight.intention.LowPriorityAction
|
||||
|
||||
@@ -62,7 +62,7 @@ abstract class AbstractDeclarativeCallChainProvider<DotQualifiedExpression : Psi
|
||||
if (reversedChain.asSequence().distinctBy { it.type }.count() < uniqueTypeCount) return
|
||||
|
||||
for ((expression, type) in reversedChain) {
|
||||
sink.addPresentation(InlineInlayPosition(expression.textRange.endOffset, relatedToPrevious = true), hasBackground = true) {
|
||||
sink.addPresentation(InlineInlayPosition(expression.textRange.endOffset, relatedToPrevious = true), hintFormat = getHintFormat()) {
|
||||
type.buildTree(expression, file.project, context, this)
|
||||
}
|
||||
}
|
||||
@@ -70,6 +70,8 @@ abstract class AbstractDeclarativeCallChainProvider<DotQualifiedExpression : Psi
|
||||
}
|
||||
}
|
||||
|
||||
protected open fun getHintFormat(): HintFormat = HintFormat.default
|
||||
|
||||
protected abstract fun ExpressionType.buildTree(
|
||||
expression: PsiElement,
|
||||
project: Project,
|
||||
|
||||
@@ -94,7 +94,7 @@ class DeclarativeInlayHintsPass(
|
||||
val lineEndOffset = editor.document.getLineEndOffset(position.line)
|
||||
val updated = tryUpdateAndDeleteFromListInlay(offsetToExistingEolElements, inlayData, lineEndOffset)
|
||||
if (!updated) {
|
||||
val presentationList = InlayPresentationList(inlayData.tree, inlayData.hintColorKind, inlayData.disabled,
|
||||
val presentationList = InlayPresentationList(inlayData.tree, inlayData.hintFormat, inlayData.disabled,
|
||||
createPayloads(inlayData), inlayData.providerClass, inlayData.tooltip, inlayData.sourceId)
|
||||
val renderer = DeclarativeInlayRenderer(presentationList, storage, inlayData.providerId, position)
|
||||
val inlay = inlayModel.addAfterLineEndElement(lineEndOffset, true, renderer)
|
||||
@@ -106,7 +106,7 @@ class DeclarativeInlayHintsPass(
|
||||
is InlineInlayPosition -> {
|
||||
val updated = tryUpdateAndDeleteFromListInlay(offsetToExistingInlineElements, inlayData, position.offset)
|
||||
if (!updated) {
|
||||
val presentationList = InlayPresentationList(inlayData.tree, inlayData.hintColorKind, inlayData.disabled,
|
||||
val presentationList = InlayPresentationList(inlayData.tree, inlayData.hintFormat, inlayData.disabled,
|
||||
createPayloads(inlayData), inlayData.providerClass, inlayData.tooltip, inlayData.sourceId)
|
||||
val renderer = DeclarativeInlayRenderer(presentationList, storage, inlayData.providerId, position)
|
||||
val inlay = inlayModel.addInlineElement(position.offset, position.relatedToPrevious, position.priority, renderer)
|
||||
@@ -145,7 +145,7 @@ class DeclarativeInlayHintsPass(
|
||||
val existingInlay = iterator.next()
|
||||
val renderer = existingInlay.renderer
|
||||
if (renderer.providerId == inlayData.providerId) {
|
||||
renderer.updateState(inlayData.tree, inlayData.disabled, inlayData.hintColorKind)
|
||||
renderer.updateState(inlayData.tree, inlayData.disabled, inlayData.hintFormat)
|
||||
existingInlay.update()
|
||||
iterator.remove()
|
||||
return true
|
||||
|
||||
@@ -32,12 +32,12 @@ class DeclarativeInlayRenderer(
|
||||
private var inlay: Inlay<DeclarativeInlayRenderer>? = null
|
||||
|
||||
override fun calcWidthInPixels(inlay: Inlay<*>): Int {
|
||||
return presentationList.getWidthInPixels(fontMetricsStorage)
|
||||
return presentationList.getWidthInPixels(fontMetricsStorage).fullWidth
|
||||
}
|
||||
|
||||
@RequiresEdt
|
||||
fun updateState(newState: TinyTree<Any?>, disabled: Boolean, hintColorKind: HintColorKind) {
|
||||
presentationList.updateState(newState, disabled, hintColorKind)
|
||||
fun updateState(newState: TinyTree<Any?>, disabled: Boolean, hintFormat: HintFormat) {
|
||||
presentationList.updateState(newState, disabled, hintFormat)
|
||||
}
|
||||
|
||||
override fun paint(inlay: Inlay<*>, g: Graphics2D, targetRegion: Rectangle2D, textAttributes: TextAttributes) {
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.io.DataOutput
|
||||
data class InlayData(
|
||||
val position: InlayPosition,
|
||||
@NlsContexts.HintText val tooltip: String?,
|
||||
val hintColorKind: HintColorKind,
|
||||
val hintFormat: HintFormat,
|
||||
val tree: TinyTree<Any?>,
|
||||
val providerId: String,
|
||||
val disabled: Boolean,
|
||||
@@ -30,7 +30,7 @@ data class InlayData(
|
||||
|
||||
companion object {
|
||||
// increment on format changed
|
||||
private const val SERDE_VERSION = 4
|
||||
private const val SERDE_VERSION = 5
|
||||
}
|
||||
|
||||
override fun serdeVersion(): Int = SERDE_VERSION + treeExternalizer.serdeVersion()
|
||||
@@ -38,7 +38,8 @@ data class InlayData(
|
||||
override fun save(output: DataOutput, inlayData: InlayData) {
|
||||
writePosition(output, inlayData.position)
|
||||
writeTooltip(output, inlayData.tooltip)
|
||||
output.writeUTF(inlayData.hintColorKind.name)
|
||||
output.writeUTF(inlayData.hintFormat.colorKind.name)
|
||||
output.writeUTF(inlayData.hintFormat.fontSize.name)
|
||||
treeExternalizer.save(output, inlayData.tree)
|
||||
writeUTF(output, inlayData.providerId)
|
||||
output.writeBoolean(inlayData.disabled)
|
||||
@@ -50,13 +51,14 @@ data class InlayData(
|
||||
val position: InlayPosition = readPosition(input)
|
||||
val tooltip: String? = readTooltip(input)
|
||||
val hintColorKind: HintColorKind = HintColorKind.valueOf(input.readUTF())
|
||||
val hintFontSize: HintFontSize = HintFontSize.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, hintColorKind, tree, providerId, disabled, payloads, providerClass, sourceId)
|
||||
return InlayData(position, tooltip, HintFormat(hintColorKind, hintFontSize), tree, providerId, disabled, payloads, providerClass, sourceId)
|
||||
}
|
||||
|
||||
private fun writePosition(output: DataOutput, position: InlayPosition) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
package com.intellij.codeInsight.hints.declarative.impl
|
||||
|
||||
import com.intellij.codeInsight.hints.declarative.InlayActionHandler
|
||||
import com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage
|
||||
import com.intellij.codeInsight.hints.presentation.InlayTextMetrics
|
||||
import com.intellij.ide.ui.AntialiasingType
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.markup.TextAttributes
|
||||
@@ -20,7 +20,7 @@ sealed class InlayPresentationEntry(
|
||||
) {
|
||||
abstract fun render(
|
||||
graphics: Graphics2D,
|
||||
fontMetricsStorage: InlayTextMetricsStorage,
|
||||
metrics: InlayTextMetrics,
|
||||
attributes: TextAttributes,
|
||||
isDisabled: Boolean,
|
||||
yOffset: Int,
|
||||
@@ -28,9 +28,9 @@ sealed class InlayPresentationEntry(
|
||||
editor: Editor
|
||||
)
|
||||
|
||||
abstract fun computeWidth(fontMetricsStorage: InlayTextMetricsStorage): Int
|
||||
abstract fun computeWidth(metrics: InlayTextMetrics): Int
|
||||
|
||||
abstract fun computeHeight(fontMetricsStorage: InlayTextMetricsStorage): Int
|
||||
abstract fun computeHeight(metrics: InlayTextMetrics): Int
|
||||
|
||||
abstract fun handleClick(editor: Editor, list: InlayPresentationList, controlDown: Boolean)
|
||||
|
||||
@@ -63,20 +63,19 @@ class TextInlayPresentationEntry(
|
||||
}
|
||||
|
||||
override fun render(graphics: Graphics2D,
|
||||
fontMetricsStorage: InlayTextMetricsStorage,
|
||||
metrics: InlayTextMetrics,
|
||||
attributes: TextAttributes,
|
||||
isDisabled: Boolean,
|
||||
yOffset: Int,
|
||||
rectHeight: Int,
|
||||
editor: Editor) {
|
||||
val metrics = fontMetricsStorage.getFontMetrics(small = false)
|
||||
val savedHint = graphics.getRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING)
|
||||
val savedColor = graphics.color
|
||||
try {
|
||||
val foreground = attributes.foregroundColor
|
||||
if (foreground != null) {
|
||||
val width = computeWidth(fontMetricsStorage)
|
||||
val height = computeHeight(fontMetricsStorage)
|
||||
val width = computeWidth(metrics)
|
||||
val height = computeHeight(metrics)
|
||||
val font = metrics.font
|
||||
graphics.font = font
|
||||
graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, AntialiasingType.getKeyForCurrentScope(false))
|
||||
@@ -96,13 +95,9 @@ class TextInlayPresentationEntry(
|
||||
}
|
||||
}
|
||||
|
||||
override fun computeWidth(fontMetricsStorage: InlayTextMetricsStorage): Int {
|
||||
return fontMetricsStorage.getFontMetrics(small = false).getStringWidth(text)
|
||||
}
|
||||
override fun computeWidth(metrics: InlayTextMetrics): Int = metrics.getStringWidth(text)
|
||||
|
||||
override fun computeHeight(fontMetricsStorage: InlayTextMetricsStorage): Int {
|
||||
return fontMetricsStorage.getFontMetrics(small = false).fontHeight
|
||||
}
|
||||
override fun computeHeight(metrics: InlayTextMetrics): Int = metrics.fontHeight
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (this === other) return true
|
||||
|
||||
@@ -2,11 +2,9 @@
|
||||
package com.intellij.codeInsight.hints.declarative.impl
|
||||
|
||||
import com.intellij.codeInsight.hints.InlayHintsUtils
|
||||
import com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
import com.intellij.codeInsight.hints.declarative.InlayActionPayload
|
||||
import com.intellij.codeInsight.hints.declarative.InlayPayload
|
||||
import com.intellij.codeInsight.hints.declarative.InlayPosition
|
||||
import com.intellij.codeInsight.hints.declarative.*
|
||||
import com.intellij.codeInsight.hints.declarative.impl.util.TinyTree
|
||||
import com.intellij.codeInsight.hints.presentation.InlayTextMetrics
|
||||
import com.intellij.codeInsight.hints.presentation.InlayTextMetricsStorage
|
||||
import com.intellij.codeInsight.hints.presentation.PresentationFactory
|
||||
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
|
||||
@@ -30,7 +28,7 @@ import java.awt.geom.Rectangle2D
|
||||
*/
|
||||
class InlayPresentationList(
|
||||
private var state: TinyTree<Any?>,
|
||||
@TestOnly var hintColorKind: HintColorKind,
|
||||
@TestOnly var hintFormat: HintFormat,
|
||||
@TestOnly var isDisabled: Boolean,
|
||||
var payloads: Map<String, InlayActionPayload>? = null,
|
||||
private val providerClass: Class<*>,
|
||||
@@ -38,11 +36,9 @@ class InlayPresentationList(
|
||||
internal val sourceId: String,
|
||||
) {
|
||||
companion object {
|
||||
private const val NOT_COMPUTED = -1
|
||||
private const val LEFT_MARGIN = 7
|
||||
private const val RIGHT_MARGIN = 7
|
||||
private const val BOTTOM_MARGIN = 1
|
||||
private const val TOP_MARGIN = 1
|
||||
private val NOT_COMPUTED = DeclarativeHintWidth(-1, -1, -1)
|
||||
private const val HORIZONTAL_PADDING = 6
|
||||
private const val HORIZONTAL_MARGIN = 2
|
||||
private const val ARC_WIDTH = 8
|
||||
private const val ARC_HEIGHT = 8
|
||||
private const val BACKGROUND_ALPHA: Float = 0.55f
|
||||
@@ -50,7 +46,7 @@ class InlayPresentationList(
|
||||
|
||||
private var entries: Array<InlayPresentationEntry> = PresentationEntryBuilder(state, providerClass).buildPresentationEntries()
|
||||
private var _partialWidthSums: IntArray? = null
|
||||
private var computedWidth: Int = NOT_COMPUTED
|
||||
private var computedWidth: DeclarativeHintWidth = NOT_COMPUTED
|
||||
private var size: Float = Float.MAX_VALUE
|
||||
private var fontName: String = ""
|
||||
|
||||
@@ -59,7 +55,7 @@ class InlayPresentationList(
|
||||
return IntArray(entries.size) {
|
||||
val entry = entries[it]
|
||||
val oldWidth = width
|
||||
width += entry.computeWidth(fontMetricsStorage)
|
||||
width += entry.computeWidth(getMetrics(fontMetricsStorage))
|
||||
oldWidth
|
||||
}
|
||||
}
|
||||
@@ -82,9 +78,11 @@ class InlayPresentationList(
|
||||
private fun findEntryByPoint(fontMetricsStorage: InlayTextMetricsStorage, pointInsideInlay: Point): InlayPresentationEntry? {
|
||||
val x = pointInsideInlay.x
|
||||
val partialWidthSums = getPartialWidthSums(fontMetricsStorage)
|
||||
val hintWidth = getWidthInPixels(fontMetricsStorage)
|
||||
for ((index, entry) in entries.withIndex()) {
|
||||
val leftBound = partialWidthSums[index] + LEFT_MARGIN
|
||||
val rightBound = partialWidthSums.getOrElse(index + 1) { Int.MAX_VALUE - LEFT_MARGIN } + LEFT_MARGIN
|
||||
val leftBound = partialWidthSums[index] + hintWidth.marginAndPadding
|
||||
val rightBound = partialWidthSums.getOrNull(index + 1)?.let { it + hintWidth.marginAndPadding }
|
||||
?: Int.MAX_VALUE
|
||||
|
||||
if (x in leftBound..rightBound) {
|
||||
return entry
|
||||
@@ -99,14 +97,14 @@ class InlayPresentationList(
|
||||
}
|
||||
|
||||
@RequiresEdt
|
||||
fun updateState(state: TinyTree<Any?>, disabled: Boolean, hintColorKind: HintColorKind) {
|
||||
fun updateState(state: TinyTree<Any?>, disabled: Boolean, hintFormat: HintFormat) {
|
||||
updateStateTree(state, this.state, 0, 0)
|
||||
this.state = state
|
||||
this.entries = PresentationEntryBuilder(state, providerClass).buildPresentationEntries()
|
||||
this.computedWidth = NOT_COMPUTED
|
||||
this._partialWidthSums = null
|
||||
this.isDisabled = disabled
|
||||
this.hintColorKind = hintColorKind
|
||||
this.hintFormat = hintFormat
|
||||
}
|
||||
|
||||
private fun updateStateTree(treeToUpdate: TinyTree<Any?>,
|
||||
@@ -145,48 +143,58 @@ class InlayPresentationList(
|
||||
error("Unexpected payload: $payload")
|
||||
}
|
||||
}
|
||||
updateState(state, isDisabled, hintColorKind)
|
||||
updateState(state, isDisabled, hintFormat)
|
||||
}
|
||||
|
||||
fun getWidthInPixels(textMetricsStorage: InlayTextMetricsStorage): Int {
|
||||
val metrics = textMetricsStorage.getFontMetrics(true)
|
||||
fun getWidthInPixels(textMetricsStorage: InlayTextMetricsStorage): DeclarativeHintWidth {
|
||||
val metrics = getMetrics(textMetricsStorage)
|
||||
val isActual = metrics.isActual(size, fontName)
|
||||
if (!isActual || computedWidth == NOT_COMPUTED) {
|
||||
size = metrics.font.size2D
|
||||
fontName = metrics.font.family
|
||||
val width = entries.sumOf { it.computeWidth(textMetricsStorage) } + LEFT_MARGIN + RIGHT_MARGIN
|
||||
computedWidth = width
|
||||
return width
|
||||
val textWidth = entries.sumOf { it.computeWidth(metrics) }
|
||||
computedWidth = DeclarativeHintWidth(HORIZONTAL_MARGIN, HORIZONTAL_PADDING, textWidth)
|
||||
return computedWidth
|
||||
}
|
||||
return computedWidth
|
||||
}
|
||||
|
||||
data class DeclarativeHintWidth(
|
||||
internal val margin: Int,
|
||||
internal val padding: Int,
|
||||
internal val textWidth: Int,
|
||||
) {
|
||||
val marginAndPadding: Int get() = margin + padding
|
||||
val boxWidth: Int get() = 2 * padding + textWidth
|
||||
val fullWidth: Int get() = 2 * margin + boxWidth
|
||||
}
|
||||
|
||||
fun paint(inlay: Inlay<*>, g: Graphics2D, targetRegion: Rectangle2D, textAttributes: TextAttributes) {
|
||||
val editor = inlay.editor as EditorImpl
|
||||
val storage = InlayHintsUtils.getTextMetricStorage(editor)
|
||||
var xOffset = 0
|
||||
val metrics = storage.getFontMetrics(small = false)
|
||||
val metrics = getMetrics(storage)
|
||||
val gap = if (targetRegion.height.toInt() < metrics.lineHeight + 2) 1 else 2
|
||||
val attrKey = when (hintColorKind) {
|
||||
val attrKey = when (hintFormat.colorKind) {
|
||||
HintColorKind.Default -> DefaultLanguageHighlighterColors.INLAY_DEFAULT
|
||||
HintColorKind.Parameter -> DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT
|
||||
HintColorKind.TextWithoutBackground -> DefaultLanguageHighlighterColors.INLAY_TEXT_WITHOUT_BACKGROUND
|
||||
}
|
||||
val attrs = editor.colorsScheme.getAttributes(attrKey)
|
||||
g.withTranslated(targetRegion.x, targetRegion.y) {
|
||||
if (hintColorKind.hasBackground()) {
|
||||
if (hintFormat.colorKind.hasBackground()) {
|
||||
val rectHeight = targetRegion.height.toInt() - gap * 2
|
||||
val rectWidth = getWidthInPixels(storage)
|
||||
val config = GraphicsUtil.setupAAPainting(g)
|
||||
GraphicsUtil.paintWithAlpha(g, BACKGROUND_ALPHA)
|
||||
g.color = attrs.backgroundColor ?: textAttributes.backgroundColor
|
||||
g.fillRoundRect(0, gap, rectWidth, rectHeight, ARC_WIDTH, ARC_HEIGHT)
|
||||
g.fillRoundRect(rectWidth.margin, gap, rectWidth.boxWidth, rectHeight, ARC_WIDTH, ARC_HEIGHT)
|
||||
config.restore()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
g.withTranslated(LEFT_MARGIN + targetRegion.x, targetRegion.y) {
|
||||
g.withTranslated(getWidthInPixels(storage).marginAndPadding + targetRegion.x, targetRegion.y) {
|
||||
for (entry in entries) {
|
||||
val hoveredWithCtrl = entry.isHoveredWithCtrl
|
||||
val finalAttrs = if (hoveredWithCtrl) {
|
||||
@@ -199,13 +207,16 @@ class InlayPresentationList(
|
||||
attrs
|
||||
}
|
||||
g.withTranslated(xOffset, 0) {
|
||||
entry.render(g, storage, finalAttrs, isDisabled, gap, targetRegion.height.toInt(), editor)
|
||||
entry.render(g, metrics, finalAttrs, isDisabled, gap, targetRegion.height.toInt(), editor)
|
||||
}
|
||||
xOffset += entry.computeWidth(storage)
|
||||
xOffset += entry.computeWidth(metrics)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getMetrics(fontMetricsStorage: InlayTextMetricsStorage): InlayTextMetrics =
|
||||
fontMetricsStorage.getFontMetrics(small = hintFormat.fontSize == HintFontSize.ABitSmallerThanInEditor)
|
||||
|
||||
@TestOnly
|
||||
fun getEntries(): Array<InlayPresentationEntry> {
|
||||
return entries
|
||||
@@ -220,7 +231,7 @@ class InlayPresentationList(
|
||||
return InlayData(
|
||||
position,
|
||||
tooltip,
|
||||
hintColorKind,
|
||||
hintFormat,
|
||||
state,
|
||||
providerId,
|
||||
isDisabled,
|
||||
|
||||
@@ -29,7 +29,7 @@ class InlayTreeSinkImpl(
|
||||
override fun addPresentation(position: InlayPosition,
|
||||
payloads: List<InlayPayload>?,
|
||||
@NlsContexts.HintText tooltip: String?,
|
||||
hintColorKind: HintColorKind,
|
||||
hintFormat: HintFormat,
|
||||
builder: PresentationTreeBuilder.() -> Unit) {
|
||||
val b = PresentationTreeBuilderImpl.createRoot()
|
||||
b.builder()
|
||||
@@ -44,7 +44,7 @@ class InlayTreeSinkImpl(
|
||||
else {
|
||||
false
|
||||
}
|
||||
inlayDataToPresentation.add(InlayData(position, tooltip, hintColorKind, tree, providerId, disabled, payloads, providerClass, sourceId))
|
||||
inlayDataToPresentation.add(InlayData(position, tooltip, hintFormat, tree, providerId, disabled, payloads, providerClass, sourceId))
|
||||
}
|
||||
|
||||
override fun whenOptionEnabled(optionId: String, block: () -> Unit) {
|
||||
|
||||
@@ -59,7 +59,7 @@ class DeclarativeHintsTogglingIntentionMenuContributor : IntentionMenuContributo
|
||||
override fun addPresentation(position: InlayPosition,
|
||||
payloads: List<InlayPayload>?,
|
||||
tooltip: String?,
|
||||
hintColorKind: HintColorKind,
|
||||
hintFormat: HintFormat,
|
||||
builder: PresentationTreeBuilder.() -> Unit) {
|
||||
if (currentOptions.isEmpty()) {
|
||||
attemptedToAddWithoutOptions = true
|
||||
|
||||
@@ -21,7 +21,7 @@ class InlayTreeSinkTest : LightPlatformCodeInsightFixture4TestCase() {
|
||||
val data = inlayData.single()
|
||||
assertEquals(providerId, data.providerId)
|
||||
assertEquals(false, data.disabled)
|
||||
assertEquals(HintColorKind.TextWithoutBackground, data.hintColorKind)
|
||||
assertEquals(HintColorKind.TextWithoutBackground, data.hintFormat.colorKind)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.codeInsight.hints.declarative.impl
|
||||
|
||||
import com.intellij.codeInsight.hints.declarative.CollapseState
|
||||
import com.intellij.codeInsight.hints.declarative.CollapsiblePresentationTreeBuilder
|
||||
import com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
import com.intellij.codeInsight.hints.declarative.PresentationTreeBuilder
|
||||
import com.intellij.codeInsight.hints.declarative.*
|
||||
import com.intellij.codeInsight.hints.declarative.impl.util.TinyTree
|
||||
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixture4TestCase
|
||||
import junit.framework.TestCase
|
||||
@@ -176,7 +173,7 @@ class MouseHandlingEntryTestCase : LightPlatformCodeInsightFixture4TestCase() {
|
||||
val state = buildState {
|
||||
initialStateBuilder()
|
||||
}
|
||||
val presentationList = InlayPresentationList(state, HintColorKind.Default, false, null, javaClass, null, DeclarativeInlayHintsPass.passSourceId)
|
||||
val presentationList = InlayPresentationList(state, HintFormat.default, false, null, javaClass, null, DeclarativeInlayHintsPass.passSourceId)
|
||||
val beforeClickEntries = presentationList.getEntries().toList()
|
||||
assertEquals(beforeClickText, toText(beforeClickEntries))
|
||||
var occurence = 0
|
||||
@@ -194,7 +191,7 @@ class MouseHandlingEntryTestCase : LightPlatformCodeInsightFixture4TestCase() {
|
||||
val newState = buildState {
|
||||
updatedStateBuilder()
|
||||
}
|
||||
presentationList.updateState(newState, false, HintColorKind.TextWithoutBackground)
|
||||
presentationList.updateState(newState, false, HintFormat.default.withColorKind(HintColorKind.TextWithoutBackground))
|
||||
val updatedStateEntries = presentationList.getEntries().toList()
|
||||
assertEquals(afterUpdateText, toText(updatedStateEntries))
|
||||
}
|
||||
@@ -252,7 +249,7 @@ class MouseHandlingEntryTestCase : LightPlatformCodeInsightFixture4TestCase() {
|
||||
myFixture.configureByText("test.txt", "my text")
|
||||
val root = PresentationTreeBuilderImpl.createRoot()
|
||||
b(root)
|
||||
val presentationList = InlayPresentationList(root.complete(), HintColorKind.Default, false, null, javaClass, null, DeclarativeInlayHintsPass.passSourceId)
|
||||
val presentationList = InlayPresentationList(root.complete(), HintFormat.default, false, null, javaClass, null, DeclarativeInlayHintsPass.passSourceId)
|
||||
val beforeClickEntries = presentationList.getEntries().toList()
|
||||
TestCase.assertEquals(beforeClick, toText(beforeClickEntries))
|
||||
beforeClickEntries.find { (it as TextInlayPresentationEntry).text == click }!!.handleClick(myFixture.editor, presentationList,
|
||||
|
||||
@@ -39,7 +39,7 @@ class GroovyLambdaParameterTypeHintsInlayProvider : InlayHintsProvider {
|
||||
sink: InlayTreeSink,
|
||||
suffixText: String) {
|
||||
val type = getRepresentableType(parameter) ?: return
|
||||
sink.addPresentation(InlineInlayPosition(offset, relatedToPrevious = true), null, null, HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(offset, relatedToPrevious = true), null, null, HintFormat.default) {
|
||||
JavaTypeHintsFactory.typeHint(type, this)
|
||||
text(suffixText)
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
package org.jetbrains.kotlin.idea.k2.codeinsight.hints
|
||||
|
||||
import com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
import com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
import com.intellij.codeInsight.hints.declarative.InlayTreeSink
|
||||
import com.intellij.codeInsight.hints.declarative.InlineInlayPosition
|
||||
import com.intellij.psi.PsiElement
|
||||
@@ -62,7 +63,7 @@ class KtCallChainHintsProvider : AbstractKtInlayHintsProvider() {
|
||||
for ((expression, type) in reversedChain) {
|
||||
sink.addPresentation(
|
||||
InlineInlayPosition(expression.textRange.endOffset, relatedToPrevious = true),
|
||||
hintColorKind = HintColorKind.Default,
|
||||
hintFormat = HintFormat.default,
|
||||
) {
|
||||
printKtType(type)
|
||||
}
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.k2.codeinsight.hints
|
||||
|
||||
import com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
import com.intellij.codeInsight.hints.declarative.InlayActionData
|
||||
import com.intellij.codeInsight.hints.declarative.InlayTreeSink
|
||||
import com.intellij.codeInsight.hints.declarative.InlineInlayPosition
|
||||
import com.intellij.codeInsight.hints.declarative.PsiPointerInlayActionNavigationHandler
|
||||
import com.intellij.codeInsight.hints.declarative.PsiPointerInlayActionPayload
|
||||
import com.intellij.codeInsight.hints.declarative.*
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.createSmartPointer
|
||||
import org.jetbrains.kotlin.analysis.api.analyze
|
||||
@@ -51,7 +46,7 @@ class KtLambdasHintsProvider : AbstractKtInlayHintsProvider() {
|
||||
}
|
||||
if (!isUsedAsExpression) return@whenOptionEnabled
|
||||
|
||||
sink.addPresentation(InlineInlayPosition(expression.endOffset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(expression.endOffset, true), hintFormat = HintFormat.default) {
|
||||
text("^")
|
||||
text(lambdaName,
|
||||
lambdaExpression.createSmartPointer().let {
|
||||
@@ -96,7 +91,7 @@ class KtLambdasHintsProvider : AbstractKtInlayHintsProvider() {
|
||||
analyze(functionLiteral) {
|
||||
val anonymousFunctionSymbol = functionLiteral.symbol
|
||||
anonymousFunctionSymbol.receiverParameter?.let { receiverSymbol ->
|
||||
sink.addPresentation(InlineInlayPosition(lbrace.textRange.endOffset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(lbrace.textRange.endOffset, true), hintFormat = HintFormat.default) {
|
||||
text("this: ")
|
||||
printKtType(receiverSymbol.type)
|
||||
}
|
||||
@@ -105,7 +100,7 @@ class KtLambdasHintsProvider : AbstractKtInlayHintsProvider() {
|
||||
anonymousFunctionSymbol.valueParameters.singleOrNull()?.let { singleParameterSymbol ->
|
||||
val type = singleParameterSymbol.takeIf { it.isImplicitLambdaParameter }
|
||||
?.returnType?.takeUnless { it.isUnitType } ?: return@let
|
||||
sink.addPresentation(InlineInlayPosition(lbrace.textRange.endOffset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(lbrace.textRange.endOffset, true), hintFormat = HintFormat.default) {
|
||||
text("it: ")
|
||||
printKtType(type)
|
||||
}
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.k2.codeinsight.hints
|
||||
|
||||
import com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
import com.intellij.codeInsight.hints.declarative.InlayActionData
|
||||
import com.intellij.codeInsight.hints.declarative.InlayTreeSink
|
||||
import com.intellij.codeInsight.hints.declarative.InlineInlayPosition
|
||||
import com.intellij.codeInsight.hints.declarative.PsiPointerInlayActionNavigationHandler
|
||||
import com.intellij.codeInsight.hints.declarative.PsiPointerInlayActionPayload
|
||||
import com.intellij.codeInsight.hints.declarative.*
|
||||
import com.intellij.codeInsight.hints.filtering.Matcher
|
||||
import com.intellij.codeInsight.hints.filtering.MatcherConstructor
|
||||
import com.intellij.psi.PsiComment
|
||||
@@ -126,7 +121,7 @@ class KtParameterHintsProvider : AbstractKtInlayHintsProvider() {
|
||||
if (argument.isArgumentNamed(symbol)) continue
|
||||
|
||||
name.takeUnless(Name::isSpecial)?.asString()?.let { stringName ->
|
||||
sink.addPresentation(InlineInlayPosition(argument.startOffset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(argument.startOffset, true), hintFormat = HintFormat.default) {
|
||||
if (symbol.isVararg) text(Typography.ellipsis.toString())
|
||||
text(stringName,
|
||||
symbol.psi?.createSmartPointer()?.let {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.k2.codeinsight.hints
|
||||
|
||||
import com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
import com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
import com.intellij.codeInsight.hints.declarative.InlayTreeSink
|
||||
import com.intellij.codeInsight.hints.declarative.InlineInlayPosition
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
@@ -258,7 +258,7 @@ internal fun collectProvideTypeHint(element: KtCallableDeclaration, offset: Int,
|
||||
}
|
||||
}
|
||||
|
||||
sink.addPresentation(InlineInlayPosition(offset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(offset, true), hintFormat = HintFormat.default) {
|
||||
text(prefix)
|
||||
printKtType(ktType)
|
||||
}
|
||||
@@ -351,7 +351,7 @@ internal fun collectLambdaTypeHint(lambdaExpression: KtExpression, sink: InlayTr
|
||||
|
||||
analyze(lambdaExpression) {
|
||||
val functionCall = functionLiteral.resolveToCall()?.singleFunctionCallOrNull() ?: return
|
||||
sink.addPresentation(InlineInlayPosition(lambdaExpression.endOffset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(lambdaExpression.endOffset, true), hintFormat = HintFormat.default) {
|
||||
text(": ")
|
||||
printKtType(functionCall.symbol.returnType)
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.k2.codeinsight.hints
|
||||
|
||||
import com.intellij.codeInsight.hints.declarative.HintColorKind
|
||||
import com.intellij.codeInsight.hints.declarative.HintFormat
|
||||
import com.intellij.codeInsight.hints.declarative.InlayTreeSink
|
||||
import com.intellij.codeInsight.hints.declarative.InlineInlayPosition
|
||||
import com.intellij.psi.PsiElement
|
||||
@@ -39,11 +39,11 @@ class KtValuesHintsProvider : AbstractKtInlayHintsProvider() {
|
||||
}
|
||||
if (!applicable) return
|
||||
|
||||
sink.addPresentation(InlineInlayPosition(leftExp.endOffset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(leftExp.endOffset, true), hintFormat = HintFormat.default) {
|
||||
text(leftText)
|
||||
}
|
||||
rightText?.let {
|
||||
sink.addPresentation(InlineInlayPosition(rightExp.startOffset, true), hintColorKind = HintColorKind.Default) {
|
||||
sink.addPresentation(InlineInlayPosition(rightExp.startOffset, true), hintFormat = HintFormat.default) {
|
||||
text(it)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user