IJPL-172124 Allow to listen for command search popup events

IJ-CR-148020

(cherry picked from commit d1a449823a5c68a5ca82f16c12ccb5d938e70e79)

GitOrigin-RevId: 378e3bd5c357a47dd1092c2c5a2ad2226c25f53e
This commit is contained in:
Konstantin Hudyakov
2024-11-22 12:19:56 +02:00
committed by intellij-monorepo-bot
parent d598a63db6
commit b3226a47c2
2 changed files with 28 additions and 0 deletions

View File

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

View File

@@ -2,6 +2,8 @@
package org.jetbrains.plugins.terminal.block.history
import com.intellij.codeInsight.lookup.Lookup
import com.intellij.codeInsight.lookup.LookupEvent
import com.intellij.codeInsight.lookup.LookupListener
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Key
@@ -20,8 +22,16 @@ internal class CommandSearchPresenter(
val lookup = CommandHistoryUtil.createLookup(project, editor, command, history.asReversed())
lookup.putUserData(IS_COMMAND_SEARCH_LOOKUP_KEY, true)
lookup.addLookupListener(object : LookupListener {
override fun lookupCanceled(event: LookupEvent) {
project.messageBus.syncPublisher(CommandSearchListener.TOPIC).commandSearchAborted(promptModel)
}
})
if (lookup.showLookup()) {
lookup.ensureSelectionVisible(false)
project.messageBus.syncPublisher(CommandSearchListener.TOPIC).commandSearchShown(promptModel)
}
}