IJPL-164254 Create an API to get terminal models right after terminal initialization

It is needed to integrate AI features implicitly.

IJ-CR-148020

(cherry picked from commit 0a66057c324509fd7bf9013c7e0b025f6243649d)

GitOrigin-RevId: 4d3265284cd045bfc78ce52f3265b04b9d34b5f4
This commit is contained in:
Konstantin Hudyakov
2024-10-17 14:13:06 +03:00
committed by intellij-monorepo-bot
parent 9f31575c35
commit 4126bbd708
2 changed files with 21 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
// 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.plugins.terminal.block
import com.intellij.util.messages.Topic
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.plugins.terminal.block.output.TerminalOutputModel
import org.jetbrains.plugins.terminal.block.prompt.TerminalPromptModel
@ApiStatus.Internal
interface BlockTerminalInitializationListener {
fun modelsInitialized(promptModel: TerminalPromptModel, outputModel: TerminalOutputModel)
companion object {
@Topic.ProjectLevel
val TOPIC: Topic<BlockTerminalInitializationListener> = Topic(BlockTerminalInitializationListener::class.java, Topic.BroadcastDirection.NONE)
}
}

View File

@@ -67,6 +67,10 @@ internal class TerminalWidgetImpl(
Disposer.register(this, session)
BlockTerminalView(project, session, settings, terminalTitle).also {
installStartupResponsivenessReporter(project, checkNotNull(options.startupMoment), session)
project.messageBus.syncPublisher(BlockTerminalInitializationListener.TOPIC).modelsInitialized(
it.promptView.controller.model,
it.outputView.controller.outputModel
)
}
}
else {