mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-06 06:21:16 +07:00
[terminal] IJPL-252272 Refactor: create the same EditorTextDecorationApplier everywhere
Specify `consumeOnlyOnCtrlClick = true` even in tests, for consistency. Also, reorder parameters in `installHyperlinksProcessing`. (cherry picked from commit cd1616a9cc9c71576380aa1be00032764464fb4e) IJ-CR-217674 GitOrigin-RevId: a1254fae08d83c3523f50eaa2baaf2609b4a75ab
This commit is contained in:
committed by
intellij-monorepo-bot
parent
15bf2b3645
commit
77ebc56595
+3
-8
@@ -5,7 +5,6 @@ import com.intellij.execution.impl.EditorTextDecorationApplier
|
||||
import com.intellij.execution.impl.buildHighlighting
|
||||
import com.intellij.execution.impl.buildHyperlink
|
||||
import com.intellij.execution.impl.buildInlay
|
||||
import com.intellij.execution.impl.createEditorTextDecorationApplier
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
@@ -13,7 +12,6 @@ import com.intellij.openapi.application.UI
|
||||
import com.intellij.openapi.application.asContextElement
|
||||
import com.intellij.openapi.diagnostic.fileLogger
|
||||
import com.intellij.openapi.editor.event.EditorMouseEvent
|
||||
import com.intellij.openapi.editor.ex.EditorEx
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.platform.eel.EelDescriptor
|
||||
import com.intellij.platform.project.projectId
|
||||
@@ -76,13 +74,10 @@ import kotlin.time.Duration.Companion.seconds
|
||||
fun installHyperlinksProcessing(
|
||||
project: Project,
|
||||
outputModel: TerminalOutputModel,
|
||||
editor: EditorEx,
|
||||
decorationApplier: EditorTextDecorationApplier,
|
||||
sessionModel: TerminalSessionModel,
|
||||
eelDescriptor: EelDescriptor,
|
||||
coroutineScope: CoroutineScope,
|
||||
// A single applier must be shared per editor (its click/hover handling uses editor-global markup),
|
||||
// so callers that also render other decorations (e.g. OSC8 links) can pass a shared instance.
|
||||
applier: EditorTextDecorationApplier = createEditorTextDecorationApplier(editor, coroutineScope.asDisposable()),
|
||||
): FrontendTerminalHyperlinkFacade {
|
||||
// The modification stamp of the most recent highlighting task whose
|
||||
// `TerminalHyperlinksOutputEvent.TaskFinished` event has been observed.
|
||||
@@ -90,10 +85,10 @@ fun installHyperlinksProcessing(
|
||||
val sessionIdDeferred = CompletableDeferred<TerminalHyperlinksSessionId>(coroutineScope.coroutineContext.job)
|
||||
|
||||
coroutineScope.launch {
|
||||
processHyperlinks(project, outputModel, sessionModel, eelDescriptor, sessionIdDeferred, applier, lastFinishedTaskStamp)
|
||||
processHyperlinks(project, outputModel, sessionModel, eelDescriptor, sessionIdDeferred, decorationApplier, lastFinishedTaskStamp)
|
||||
}
|
||||
|
||||
return FrontendTerminalHyperlinkFacade(sessionIdDeferred, applier, lastFinishedTaskStamp)
|
||||
return FrontendTerminalHyperlinkFacade(sessionIdDeferred, decorationApplier, lastFinishedTaskStamp)
|
||||
}
|
||||
|
||||
private suspend fun processHyperlinks(
|
||||
|
||||
+2
-4
@@ -391,20 +391,18 @@ class TerminalViewImpl(
|
||||
outputBufferHyperlinksFacade = installHyperlinksProcessing(
|
||||
project = project,
|
||||
outputModel = outputModel,
|
||||
editor = outputEditor,
|
||||
decorationApplier = outputDecorationApplier,
|
||||
sessionModel = sessionModel,
|
||||
eelDescriptor = eelDescriptor,
|
||||
coroutineScope = coroutineScope.childScope("Output Buffer Hyperlinks"),
|
||||
applier = outputDecorationApplier,
|
||||
)
|
||||
alternateBufferHyperlinksFacade = installHyperlinksProcessing(
|
||||
project = project,
|
||||
outputModel = alternateBufferModel,
|
||||
editor = alternateBufferEditor,
|
||||
decorationApplier = alternateBufferDecorationApplier,
|
||||
sessionModel = sessionModel,
|
||||
eelDescriptor = eelDescriptor,
|
||||
coroutineScope = coroutineScope.childScope("Alternate Buffer Hyperlinks"),
|
||||
applier = alternateBufferDecorationApplier,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -5,6 +5,7 @@ import com.intellij.execution.filters.ConsoleFilterProvider
|
||||
import com.intellij.execution.filters.Filter
|
||||
import com.intellij.execution.filters.HyperlinkInfo
|
||||
import com.intellij.execution.impl.InlayProvider
|
||||
import com.intellij.execution.impl.createEditorTextDecorationApplier
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.application.asContextElement
|
||||
@@ -29,6 +30,7 @@ import com.intellij.testFramework.ExtensionTestUtil
|
||||
import com.intellij.testFramework.common.timeoutRunBlocking
|
||||
import com.intellij.testFramework.fixtures.BasePlatformTestCase
|
||||
import com.intellij.util.AwaitCancellationAndInvoke
|
||||
import com.intellij.util.asDisposable
|
||||
import com.intellij.util.awaitCancellationAndInvoke
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@@ -647,7 +649,7 @@ internal class TerminalHyperlinksProcessingTest : BasePlatformTestCase() {
|
||||
private val hyperlinkFacade = installHyperlinksProcessing(
|
||||
project = project,
|
||||
outputModel = outputModel,
|
||||
editor = editor,
|
||||
decorationApplier = createEditorTextDecorationApplier(editor, coroutineScope.asDisposable(), consumeOnlyOnCtrlClick = true),
|
||||
sessionModel = createSessionModel(),
|
||||
eelDescriptor = LocalEelDescriptor,
|
||||
coroutineScope = coroutineScope.childScope("HyperlinksProcessing")
|
||||
|
||||
Reference in New Issue
Block a user