mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-30 18:28:55 +07:00
[rd debugger] IJPL-219714 Extract a separate interface for HighlighterProvider
GitOrigin-RevId: fe90281a126ec637b701fcf9e8dd3f9c6f360b61
This commit is contained in:
committed by
intellij-monorepo-bot
parent
72ffad9c1f
commit
de687496c6
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
@@ -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 }
|
||||
|
||||
@@ -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 {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user