[rd debugger] IJPL-219714 Extract a separate interface for HighlighterProvider

GitOrigin-RevId: fe90281a126ec637b701fcf9e8dd3f9c6f360b61
This commit is contained in:
Maksim Zuev
2026-02-12 11:38:12 +01:00
committed by intellij-monorepo-bot
parent 72ffad9c1f
commit de687496c6
7 changed files with 31 additions and 12 deletions

View File

@@ -97,8 +97,8 @@ import com.intellij.xdebugger.XSourcePosition;
import com.intellij.xdebugger.frame.XValueContainer;
import com.intellij.xdebugger.frame.XValueNode;
import com.intellij.xdebugger.impl.XDebuggerUtilImpl;
import com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter;
import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl;
import com.intellij.xdebugger.ui.ExecutionPointHighlighterProvider;
import com.jetbrains.jdi.ArrayReferenceImpl;
import com.jetbrains.jdi.JNITypeParser;
import com.jetbrains.jdi.LocationImpl;
@@ -905,7 +905,7 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils {
}
}
private static class JavaXSourcePosition implements XSourcePosition, ExecutionPointHighlighter.HighlighterProvider {
private static class JavaXSourcePosition implements XSourcePosition, ExecutionPointHighlighterProvider {
private final SourcePosition mySourcePosition;
private final @NotNull VirtualFile myFile;

View File

@@ -797,6 +797,8 @@ com.intellij.xdebugger.ui.DebuggerColors
- sf:NOT_TOP_FRAME_ATTRIBUTES:com.intellij.openapi.editor.colors.TextAttributesKey
- sf:SMART_STEP_INTO_SELECTION:com.intellij.openapi.editor.colors.TextAttributesKey
- sf:SMART_STEP_INTO_TARGET:com.intellij.openapi.editor.colors.TextAttributesKey
com.intellij.xdebugger.ui.ExecutionPointHighlighterProvider
- a:getHighlightRange():com.intellij.openapi.util.TextRange
c:com.intellij.xdebugger.ui.XDebugTabLayouter
- <init>():V
- registerAdditionalContent(com.intellij.execution.ui.RunnerLayoutUi):V

View File

@@ -0,0 +1,14 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.xdebugger.ui;
import com.intellij.openapi.util.TextRange;
import com.intellij.xdebugger.XSourcePosition;
import org.jetbrains.annotations.Nullable;
/**
* {@link XSourcePosition} can be marked with this interface to highlight exact range in the editor when execution point is reached.
*/
public interface ExecutionPointHighlighterProvider {
@Nullable
TextRange getHighlightRange();
}

View File

@@ -66,7 +66,7 @@ com.intellij.xdebugger.impl.frame.XWatchesView
- a:removeAllWatches():V
- a:removeWatches(java.util.List):V
com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter$HighlighterProvider
- a:getHighlightRange():com.intellij.openapi.util.TextRange
- com.intellij.xdebugger.ui.ExecutionPointHighlighterProvider
a:com.intellij.xdebugger.impl.ui.XDebuggerEditorBase
- rebuildDocument():V
c:com.intellij.xdebugger.impl.ui.XDebuggerExpressionComboBox

View File

@@ -13,13 +13,13 @@ import com.intellij.platform.debugger.impl.rpc.XSourcePositionDto
import com.intellij.platform.debugger.impl.shared.XDebuggerUtilImplShared
import com.intellij.pom.Navigatable
import com.intellij.xdebugger.XSourcePosition
import com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter
import com.intellij.xdebugger.ui.ExecutionPointHighlighterProvider
import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
fun XSourcePosition.toRpc(): XSourcePositionDto {
return runReadAction {
val textRangeDto = (this as? ExecutionPointHighlighter.HighlighterProvider)?.highlightRange?.toRpc()
val textRangeDto = (this as? ExecutionPointHighlighterProvider)?.highlightRange?.toRpc()
XSourcePositionDto(line, offset, file.rpcId(), textRangeDto, this)
}
}
@@ -34,7 +34,7 @@ fun XSourcePositionDto.sourcePosition(): XSourcePosition {
}
private class SerializedXSourcePosition(private val dto: XSourcePositionDto) : XSourcePosition,
ExecutionPointHighlighter.HighlighterProvider {
ExecutionPointHighlighterProvider {
private val virtualFile = dto.fileId.virtualFile()
override fun getLine(): Int {

View File

@@ -8,7 +8,7 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.platform.util.coroutines.flow.mapStateIn
import com.intellij.util.asSafely
import com.intellij.xdebugger.XSourcePosition
import com.intellij.xdebugger.impl.ui.ExecutionPointHighlighter
import com.intellij.xdebugger.ui.ExecutionPointHighlighterProvider
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
@@ -102,7 +102,7 @@ internal class ExecutionPositionVmImpl(
override val file: VirtualFile by sourcePosition::file
override val line: Int by sourcePosition::line
override val exactRange: TextRange? get() = sourcePosition.asSafely<ExecutionPointHighlighter.HighlighterProvider>()?.highlightRange
override val exactRange: TextRange? get() = sourcePosition.asSafely<ExecutionPointHighlighterProvider>()?.highlightRange
private val navigationAwareUpdateFlow: Flow<Boolean> = run {
val externalUpdateFlow = updateRequestFlow.filter { it.file == file }.map { it.isToScrollToPosition }

View File

@@ -36,6 +36,7 @@ import com.intellij.xdebugger.XSourcePosition;
import com.intellij.xdebugger.impl.settings.DataViewsConfigurableUi;
import com.intellij.xdebugger.settings.XDebuggerSettingsManager;
import com.intellij.xdebugger.ui.DebuggerColors;
import com.intellij.xdebugger.ui.ExecutionPointHighlighterProvider;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -197,7 +198,7 @@ public class ExecutionPointHighlighter {
TextAttributesKey attributesKey = myNotTopFrame ? DebuggerColors.NOT_TOP_FRAME_ATTRIBUTES : DebuggerColors.EXECUTIONPOINT_ATTRIBUTES;
MarkupModel markupModel = DocumentMarkupModel.forDocument(document, myProject, true);
if (mySourcePosition instanceof HighlighterProvider highlighterProvider) {
if (mySourcePosition instanceof ExecutionPointHighlighterProvider highlighterProvider) {
TextRange range = highlighterProvider.getHighlightRange();
if (range != null) {
myRangeHighlighter = markupModel
@@ -245,8 +246,10 @@ public class ExecutionPointHighlighter {
}
}
public interface HighlighterProvider {
@Nullable
TextRange getHighlightRange();
/**
* @deprecated Implement {@link ExecutionPointHighlighterProvider} instead.
*/
@Deprecated
public interface HighlighterProvider extends ExecutionPointHighlighterProvider {
}
}