From eb09ab9d384537a61657a65c1a55f4f227136dec Mon Sep 17 00:00:00 2001 From: Vojtech Balik Date: Fri, 4 Oct 2024 20:59:49 +0200 Subject: [PATCH] [reader mode] fix an easy case of IJPL-29910 GitOrigin-RevId: 31fe02761e99c0824668cc59f1c04b9931c3da00 --- .../codeInsight/daemon/impl/IndentGuideRenderer.java | 3 +-- .../visualLayer/VisualFormattingLayerServiceImpl.kt | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IndentGuideRenderer.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IndentGuideRenderer.java index 86df453bc510..ca957bf1235b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IndentGuideRenderer.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/IndentGuideRenderer.java @@ -84,8 +84,7 @@ public class IndentGuideRenderer implements CustomHighlighterRenderer { var vfmtRightShift = 0; if (virtualGuideInfo.isVirtualFormattingEnabled(editor)) { vfmtRightShift = virtualGuideInfo - .getVisualFormattingInlineInlays(editor, doc.getLineStartOffset(doc.getLineNumber(startOffset)), - doc.getLineEndOffset(doc.getLineNumber(startOffset))) + .getVisualFormattingInlineInlays(editor, startOffset, startOffset) .stream() .map(inlay -> inlay.getWidthInPixels()) .reduce(0, Integer::sum); diff --git a/platform/lang-impl/src/com/intellij/formatting/visualLayer/VisualFormattingLayerServiceImpl.kt b/platform/lang-impl/src/com/intellij/formatting/visualLayer/VisualFormattingLayerServiceImpl.kt index 2d4a56023990..e540ed51cceb 100644 --- a/platform/lang-impl/src/com/intellij/formatting/visualLayer/VisualFormattingLayerServiceImpl.kt +++ b/platform/lang-impl/src/com/intellij/formatting/visualLayer/VisualFormattingLayerServiceImpl.kt @@ -193,7 +193,11 @@ class VisualFormattingLayerServiceImpl : VisualFormattingLayerService() { val columnsDelta = replacementColumns - originalColumns when { - columnsDelta > 0 -> yield(InlineInlay(originalEndOffset, columnsDelta)) + columnsDelta > 0 -> { + // If we place the inlay at the right boundary, the inlay will stay even if the whitespace is folded. (as in IJPL-29910) + // In the presence of tabs, however, things get too complicated + yield(InlineInlay(if (originalContainsTabs) originalEndOffset else originalStartOffset, columnsDelta)) + } columnsDelta < 0 -> { val originalLength = originalEndOffset - originalStartOffset if (originalContainsTabs) {