mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
[terminal] IDEA-344702 Iterate over results on Ctrl+R in command search popup
GitOrigin-RevId: 395a2f6c0a975c77f03de9806edfbc350935c6ab
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8975f98b6d
commit
87a77676af
@@ -51,6 +51,9 @@
|
||||
id="terminalFindPrevious" order="first"/>
|
||||
<editorActionHandler action="Replace" implementationClass="org.jetbrains.plugins.terminal.exp.TerminalReplaceHandler"
|
||||
id="terminalReplace" order="first"/>
|
||||
<editorActionHandler action="Terminal.SearchInCommandHistory"
|
||||
implementationClass="org.jetbrains.plugins.terminal.exp.history.CommandSearchSelectNextHandler"
|
||||
id="terminalCommandSearchSelectNext" order="first"/>
|
||||
<typedHandler implementation="org.jetbrains.plugins.terminal.exp.TerminalCompletionAutoPopupHandler"
|
||||
id="terminalCompletionAutoPopup" order="first"/>
|
||||
<lookup.charFilter implementation="org.jetbrains.plugins.terminal.exp.TerminalCharFilter"
|
||||
|
||||
@@ -2,15 +2,18 @@
|
||||
package org.jetbrains.plugins.terminal.exp.history
|
||||
|
||||
import com.intellij.codeInsight.lookup.LookupManager
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.intellij.openapi.actionSystem.remoting.ActionRemoteBehaviorSpecification
|
||||
import com.intellij.openapi.editor.Caret
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.actionSystem.EditorActionHandler
|
||||
import com.intellij.ui.ScrollingUtil
|
||||
import org.jetbrains.plugins.terminal.exp.TerminalDataContextUtils.isPromptEditor
|
||||
import org.jetbrains.plugins.terminal.exp.TerminalDataContextUtils.promptController
|
||||
import org.jetbrains.plugins.terminal.exp.TerminalPromotedEditorAction
|
||||
import org.jetbrains.plugins.terminal.exp.history.CommandSearchPresenter.Companion.isTerminalCommandSearch
|
||||
|
||||
internal class CommandSearchAction : TerminalPromotedEditorAction(Handler()), ActionRemoteBehaviorSpecification.Disabled {
|
||||
override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT
|
||||
@@ -24,4 +27,21 @@ internal class CommandSearchAction : TerminalPromotedEditorAction(Handler()), Ac
|
||||
return editor.isPromptEditor && LookupManager.getActiveLookup(editor) == null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal class CommandSearchSelectNextHandler(private val originalHandler: EditorActionHandler) : EditorActionHandler() {
|
||||
override fun doExecute(editor: Editor, caret: Caret?, dataContext: DataContext?) {
|
||||
val lookup = LookupManager.getActiveLookup(editor) as? LookupImpl
|
||||
if (lookup?.isTerminalCommandSearch == true) {
|
||||
ScrollingUtil.moveUp(lookup.list, 0)
|
||||
lookup.markSelectionTouched()
|
||||
lookup.refreshUi(false, true)
|
||||
}
|
||||
else originalHandler.execute(editor, caret, dataContext)
|
||||
}
|
||||
|
||||
override fun isEnabledForCaret(editor: Editor, caret: Caret, dataContext: DataContext?): Boolean {
|
||||
return editor.isPromptEditor && LookupManager.getActiveLookup(editor)?.isTerminalCommandSearch == true
|
||||
|| originalHandler.isEnabled(editor, caret, dataContext)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user