mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-05-28 16:34:10 +02:00
Remove currentAction and some unused code
This commit is contained in:
parent
126de5c218
commit
ad20021cee
src/main/java/com/maddyhome/idea/vim/ui/ex
@ -1,263 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2003-2023 The IdeaVim authors
|
|
||||||
*
|
|
||||||
* Use of this source code is governed by an MIT-style
|
|
||||||
* license that can be found in the LICENSE.txt file or at
|
|
||||||
* https://opensource.org/licenses/MIT.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.maddyhome.idea.vim.ui.ex
|
|
||||||
|
|
||||||
import com.intellij.openapi.diagnostic.logger
|
|
||||||
import com.intellij.openapi.editor.textarea.TextComponentEditorImpl
|
|
||||||
import com.maddyhome.idea.vim.KeyHandler
|
|
||||||
import com.maddyhome.idea.vim.api.LocalOptionInitialisationScenario
|
|
||||||
import com.maddyhome.idea.vim.api.injector
|
|
||||||
import com.maddyhome.idea.vim.newapi.vim
|
|
||||||
import java.awt.event.ActionEvent
|
|
||||||
import java.awt.event.KeyEvent
|
|
||||||
import javax.swing.Action
|
|
||||||
import javax.swing.KeyStroke
|
|
||||||
import javax.swing.text.BadLocationException
|
|
||||||
import javax.swing.text.DefaultEditorKit
|
|
||||||
import javax.swing.text.Document
|
|
||||||
import javax.swing.text.TextAction
|
|
||||||
import kotlin.math.abs
|
|
||||||
import kotlin.math.min
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal interface MultiStepAction : Action {
|
|
||||||
fun reset()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class HistoryUpAction : TextAction(ExEditorKit.HistoryUp) {
|
|
||||||
override fun actionPerformed(actionEvent: ActionEvent) {
|
|
||||||
val target = getTextComponent(actionEvent) as ExTextField
|
|
||||||
target.selectHistory(true, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class HistoryDownAction : TextAction(ExEditorKit.HistoryDown) {
|
|
||||||
override fun actionPerformed(actionEvent: ActionEvent) {
|
|
||||||
val target = getTextComponent(actionEvent) as ExTextField
|
|
||||||
target.selectHistory(false, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class HistoryUpFilterAction : TextAction(ExEditorKit.HistoryUpFilter) {
|
|
||||||
override fun actionPerformed(actionEvent: ActionEvent) {
|
|
||||||
val target = getTextComponent(actionEvent) as ExTextField
|
|
||||||
target.selectHistory(true, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class HistoryDownFilterAction : TextAction(ExEditorKit.HistoryDownFilter) {
|
|
||||||
override fun actionPerformed(actionEvent: ActionEvent) {
|
|
||||||
val target = getTextComponent(actionEvent) as ExTextField
|
|
||||||
target.selectHistory(false, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class CompleteEntryAction : TextAction(ExEditorKit.CompleteEntry) {
|
|
||||||
override fun actionPerformed(actionEvent: ActionEvent) {
|
|
||||||
logger.debug("complete entry")
|
|
||||||
val stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0)
|
|
||||||
|
|
||||||
// We send the <Enter> keystroke through the key handler rather than calling ProcessGroup#processExEntry directly.
|
|
||||||
// We do this for a couple of reasons:
|
|
||||||
// * The C mode mapping for ProcessExEntryAction handles the actual entry, and most importantly, it does so as a
|
|
||||||
// write action
|
|
||||||
// * The key handler routines get the chance to clean up and reset state
|
|
||||||
val entry = ExEntryPanel.getInstance().entry
|
|
||||||
val keyHandler = KeyHandler.getInstance()
|
|
||||||
keyHandler.handleKey(entry.editor!!.vim, stroke, entry.context.vim, keyHandler.keyHandlerState)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val logger = logger<CompleteEntryAction>()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class CancelEntryAction : TextAction(ExEditorKit.CancelEntry) {
|
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
|
||||||
val target = getTextComponent(e) as ExTextField
|
|
||||||
target.cancel()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class EscapeCharAction : TextAction(ExEditorKit.EscapeChar) {
|
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
|
||||||
val target = getTextComponent(e) as ExTextField
|
|
||||||
target.escape()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal abstract class DeleteCharAction internal constructor(name: String?) : TextAction(name) {
|
|
||||||
@kotlin.jvm.Throws(BadLocationException::class)
|
|
||||||
fun deleteSelection(doc: Document, dot: Int, mark: Int): Boolean {
|
|
||||||
if (dot != mark) {
|
|
||||||
doc.remove(min(dot, mark), abs(dot - mark))
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.jvm.Throws(BadLocationException::class)
|
|
||||||
fun deleteNextChar(doc: Document, dot: Int): Boolean {
|
|
||||||
if (dot < doc.length) {
|
|
||||||
var delChars = 1
|
|
||||||
if (dot < doc.length - 1) {
|
|
||||||
val dotChars = doc.getText(dot, 2)
|
|
||||||
val c0 = dotChars[0]
|
|
||||||
val c1 = dotChars[1]
|
|
||||||
if (c0 in '\uD800'..'\uDBFF' && c1 in '\uDC00'..'\uDFFF') {
|
|
||||||
delChars = 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
doc.remove(dot, delChars)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
@kotlin.jvm.Throws(BadLocationException::class)
|
|
||||||
fun deletePrevChar(doc: Document, dot: Int): Boolean {
|
|
||||||
if (dot > 0) {
|
|
||||||
var delChars = 1
|
|
||||||
if (dot > 1) {
|
|
||||||
val dotChars = doc.getText(dot - 2, 2)
|
|
||||||
val c0 = dotChars[0]
|
|
||||||
val c1 = dotChars[1]
|
|
||||||
if (c0 in '\uD800'..'\uDBFF' && c1 in '\uDC00'..'\uDFFF') {
|
|
||||||
delChars = 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
doc.remove(dot - delChars, delChars)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class DeleteNextCharAction : DeleteCharAction(DefaultEditorKit.deleteNextCharAction) {
|
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
|
||||||
val target = getTextComponent(e) as ExTextField
|
|
||||||
target.saveLastEntry()
|
|
||||||
try {
|
|
||||||
val doc = target.document
|
|
||||||
val caret = target.caret
|
|
||||||
val dot = caret.dot
|
|
||||||
val mark = caret.mark
|
|
||||||
if (!deleteSelection(doc, dot, mark) && !deleteNextChar(doc, dot) && !deletePrevChar(doc, dot)) {
|
|
||||||
target.cancel()
|
|
||||||
}
|
|
||||||
} catch (ex: BadLocationException) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class DeletePreviousCharAction : DeleteCharAction(DefaultEditorKit.deletePrevCharAction) {
|
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
|
||||||
val target = getTextComponent(e) as ExTextField
|
|
||||||
target.saveLastEntry()
|
|
||||||
try {
|
|
||||||
val doc = target.document
|
|
||||||
val caret = target.caret
|
|
||||||
val dot = caret.dot
|
|
||||||
val mark = caret.mark
|
|
||||||
if (!deleteSelection(doc, dot, mark) && !deletePrevChar(doc, dot)) {
|
|
||||||
if (dot == 0 && doc.length == 0) {
|
|
||||||
target.cancel()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (bl: BadLocationException) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class DeletePreviousWordAction : TextAction(DefaultEditorKit.deletePrevWordAction) {
|
|
||||||
/**
|
|
||||||
* Invoked when an action occurs.
|
|
||||||
*/
|
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
|
||||||
val target = getTextComponent(e) as ExTextField
|
|
||||||
target.saveLastEntry()
|
|
||||||
val doc = target.document
|
|
||||||
val caret = target.caret
|
|
||||||
val project = target.editor!!.project
|
|
||||||
|
|
||||||
// Create a VimEditor instance on the Swing text field which we can pass to the search helpers. We need an editor
|
|
||||||
// rather than just working on a buffer because the search helpers need local options (specifically the local to
|
|
||||||
// buffer 'iskeyword'). We use the CMD_LINE scenario to initialise local options from the main editor. The options
|
|
||||||
// service will copy all local-to-buffer and local-to-window options, effectively cloning the options.
|
|
||||||
// TODO: Over time, we should migrate all ex actions to be based on VimEditor
|
|
||||||
// This will mean we always have an editor that has been initialised for options, etc. But also means that we can
|
|
||||||
// share the command line entry actions between IdeaVim implementations
|
|
||||||
val editor = TextComponentEditorImpl(project, target).vim
|
|
||||||
injector.optionGroup.initialiseLocalOptions(editor, target.editor!!.vim, LocalOptionInitialisationScenario.CMD_LINE)
|
|
||||||
|
|
||||||
val offset = injector.searchHelper.findNextWord(editor, caret.dot, -1, bigWord = false, spaceWords = false)
|
|
||||||
if (logger.isDebugEnabled) logger.debug("offset=$offset")
|
|
||||||
try {
|
|
||||||
val pos = caret.dot
|
|
||||||
doc.remove(offset, pos - offset)
|
|
||||||
} catch (ex: BadLocationException) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val logger = logger<DeletePreviousWordAction>()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class DeleteToCursorAction : TextAction(ExEditorKit.DeleteToCursor) {
|
|
||||||
/**
|
|
||||||
* Invoked when an action occurs.
|
|
||||||
*/
|
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
|
||||||
val target = getTextComponent(e) as ExTextField
|
|
||||||
target.saveLastEntry()
|
|
||||||
val doc = target.document
|
|
||||||
val caret = target.caret
|
|
||||||
try {
|
|
||||||
doc.remove(0, caret.dot)
|
|
||||||
} catch (ex: BadLocationException) {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
|
||||||
internal class ToggleInsertReplaceAction : TextAction(ExEditorKit.ToggleInsertReplace) {
|
|
||||||
/**
|
|
||||||
* Invoked when an action occurs.
|
|
||||||
*/
|
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
|
||||||
logger.debug("actionPerformed")
|
|
||||||
val target = getTextComponent(e) as ExTextField
|
|
||||||
target.toggleInsertReplace()
|
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
|
||||||
logger.debug("ToggleInsertReplaceAction()")
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val logger = logger<ToggleInsertReplaceAction>()
|
|
||||||
}
|
|
||||||
}
|
|
@ -7,7 +7,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.maddyhome.idea.vim.ui.ex
|
package com.maddyhome.idea.vim.ui.ex
|
||||||
|
|
||||||
import com.intellij.openapi.diagnostic.debug
|
|
||||||
import com.intellij.openapi.diagnostic.logger
|
import com.intellij.openapi.diagnostic.logger
|
||||||
import com.maddyhome.idea.vim.KeyHandler
|
import com.maddyhome.idea.vim.KeyHandler
|
||||||
import com.maddyhome.idea.vim.api.injector
|
import com.maddyhome.idea.vim.api.injector
|
||||||
@ -15,50 +14,12 @@ import com.maddyhome.idea.vim.newapi.vim
|
|||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import java.awt.event.ActionEvent
|
import java.awt.event.ActionEvent
|
||||||
import java.awt.event.KeyEvent
|
import java.awt.event.KeyEvent
|
||||||
import javax.swing.Action
|
|
||||||
import javax.swing.KeyStroke
|
import javax.swing.KeyStroke
|
||||||
import javax.swing.text.DefaultEditorKit
|
import javax.swing.text.DefaultEditorKit
|
||||||
import javax.swing.text.Document
|
import javax.swing.text.Document
|
||||||
import javax.swing.text.TextAction
|
|
||||||
|
|
||||||
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
@Deprecated("ExCommands should be migrated to KeyHandler like commands for other modes")
|
||||||
internal object ExEditorKit : DefaultEditorKit() {
|
internal object ExEditorKit : DefaultEditorKit() {
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val CancelEntry: String = "cancel-entry"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val CompleteEntry: String = "complete-entry"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val EscapeChar: String = "escape"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val DeleteToCursor: String = "delete-to-cursor"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val ToggleInsertReplace: String = "toggle-insert"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val HistoryUp: String = "history-up"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val HistoryDown: String = "history-down"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val HistoryUpFilter: String = "history-up-filter"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val HistoryDownFilter: String = "history-down-filter"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val StartDigraph: String = "start-digraph"
|
|
||||||
|
|
||||||
@NonNls
|
|
||||||
val StartLiteral: String = "start-literal"
|
|
||||||
|
|
||||||
private val logger = logger<ExEditorKit>()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the MIME type of the data that this
|
* Gets the MIME type of the data that this
|
||||||
* kit represents support for.
|
* kit represents support for.
|
||||||
@ -70,19 +31,6 @@ internal object ExEditorKit : DefaultEditorKit() {
|
|||||||
return "text/ideavim"
|
return "text/ideavim"
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches the set of commands that can be used
|
|
||||||
* on a text component that is using a model and
|
|
||||||
* view produced by this kit.
|
|
||||||
*
|
|
||||||
* @return the set of actions
|
|
||||||
*/
|
|
||||||
override fun getActions(): Array<Action> {
|
|
||||||
val res = TextAction.augmentList(super.getActions(), exActions)
|
|
||||||
logger.debug { "res.length=${res.size}" }
|
|
||||||
return res
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an uninitialized text storage model
|
* Creates an uninitialized text storage model
|
||||||
* that is appropriate for this type of editor.
|
* that is appropriate for this type of editor.
|
||||||
@ -93,48 +41,29 @@ internal object ExEditorKit : DefaultEditorKit() {
|
|||||||
return ExDocument()
|
return ExDocument()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val exActions = arrayOf<Action>(
|
|
||||||
CancelEntryAction(),
|
|
||||||
CompleteEntryAction(),
|
|
||||||
EscapeCharAction(),
|
|
||||||
DeleteNextCharAction(),
|
|
||||||
DeletePreviousCharAction(),
|
|
||||||
DeletePreviousWordAction(),
|
|
||||||
DeleteToCursorAction(),
|
|
||||||
HistoryUpAction(),
|
|
||||||
HistoryDownAction(),
|
|
||||||
HistoryUpFilterAction(),
|
|
||||||
HistoryDownFilterAction(),
|
|
||||||
ToggleInsertReplaceAction(),
|
|
||||||
)
|
|
||||||
|
|
||||||
class DefaultExKeyHandler : DefaultKeyTypedAction() {
|
class DefaultExKeyHandler : DefaultKeyTypedAction() {
|
||||||
override fun actionPerformed(e: ActionEvent) {
|
override fun actionPerformed(e: ActionEvent) {
|
||||||
val target = getTextComponent(e) as ExTextField
|
val target = getTextComponent(e) as ExTextField
|
||||||
val currentAction = target.currentAction
|
|
||||||
if (currentAction != null) {
|
val key = convert(e)
|
||||||
currentAction.actionPerformed(e)
|
if (key != null) {
|
||||||
} else {
|
val c = key.keyChar
|
||||||
val key = convert(e)
|
if (c.code > 0) {
|
||||||
if (key != null) {
|
if (target.useHandleKeyFromEx) {
|
||||||
val c = key.keyChar
|
val panel = ((injector.commandLine.getActiveCommandLine() as? ExEntryPanel) ?: (injector.modalInput.getCurrentModalInput() as? WrappedAsModalInputExEntryPanel)?.exEntryPanel) ?: return
|
||||||
if (c.code > 0) {
|
val entry = panel.entry
|
||||||
if (target.useHandleKeyFromEx) {
|
val editor = entry.editor
|
||||||
val panel = ((injector.commandLine.getActiveCommandLine() as? ExEntryPanel) ?: (injector.modalInput.getCurrentModalInput() as? WrappedAsModalInputExEntryPanel)?.exEntryPanel) ?: return
|
val keyHandler = KeyHandler.getInstance()
|
||||||
val entry = panel.entry
|
keyHandler.handleKey(editor!!.vim, key, entry.context.vim, keyHandler.keyHandlerState)
|
||||||
val editor = entry.editor
|
} else {
|
||||||
val keyHandler = KeyHandler.getInstance()
|
val event = ActionEvent(e.source, e.id, c.toString(), e.getWhen(), e.modifiers)
|
||||||
keyHandler.handleKey(editor!!.vim, key, entry.context.vim, keyHandler.keyHandlerState)
|
super.actionPerformed(event)
|
||||||
} else {
|
|
||||||
val event = ActionEvent(e.source, e.id, c.toString(), e.getWhen(), e.modifiers)
|
|
||||||
super.actionPerformed(event)
|
|
||||||
}
|
|
||||||
target.saveLastEntry()
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
super.actionPerformed(e)
|
|
||||||
target.saveLastEntry()
|
target.saveLastEntry()
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
super.actionPerformed(e)
|
||||||
|
target.saveLastEntry()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,11 +16,9 @@ import com.intellij.util.ui.JBUI;
|
|||||||
import com.maddyhome.idea.vim.VimPlugin;
|
import com.maddyhome.idea.vim.VimPlugin;
|
||||||
import com.maddyhome.idea.vim.api.VimCommandLine;
|
import com.maddyhome.idea.vim.api.VimCommandLine;
|
||||||
import com.maddyhome.idea.vim.api.VimCommandLineCaret;
|
import com.maddyhome.idea.vim.api.VimCommandLineCaret;
|
||||||
import com.maddyhome.idea.vim.api.VimEditor;
|
|
||||||
import com.maddyhome.idea.vim.helper.UiHelper;
|
import com.maddyhome.idea.vim.helper.UiHelper;
|
||||||
import com.maddyhome.idea.vim.history.HistoryConstants;
|
import com.maddyhome.idea.vim.history.HistoryConstants;
|
||||||
import com.maddyhome.idea.vim.history.HistoryEntry;
|
import com.maddyhome.idea.vim.history.HistoryEntry;
|
||||||
import com.maddyhome.idea.vim.newapi.IjVimEditor;
|
|
||||||
import com.maddyhome.idea.vim.options.helpers.GuiCursorAttributes;
|
import com.maddyhome.idea.vim.options.helpers.GuiCursorAttributes;
|
||||||
import com.maddyhome.idea.vim.options.helpers.GuiCursorMode;
|
import com.maddyhome.idea.vim.options.helpers.GuiCursorMode;
|
||||||
import com.maddyhome.idea.vim.options.helpers.GuiCursorOptionHelper;
|
import com.maddyhome.idea.vim.options.helpers.GuiCursorOptionHelper;
|
||||||
@ -67,9 +65,6 @@ public class ExTextField extends JTextField {
|
|||||||
// If we're in the middle of an action (e.g. entering a register to paste, or inserting a digraph), cancel it if
|
// If we're in the middle of an action (e.g. entering a register to paste, or inserting a digraph), cancel it if
|
||||||
// the mouse is clicked anywhere. Vim's behavior is to use the mouse click as an event, which can lead to
|
// the mouse is clicked anywhere. Vim's behavior is to use the mouse click as an event, which can lead to
|
||||||
// something like : !%!C, which I don't believe is documented, or useful
|
// something like : !%!C, which I don't believe is documented, or useful
|
||||||
if (currentAction != null) {
|
|
||||||
clearCurrentAction();
|
|
||||||
}
|
|
||||||
super.mouseClicked(e);
|
super.mouseClicked(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -240,20 +235,15 @@ public class ExTextField extends JTextField {
|
|||||||
// This gets called for ALL events, before the IDE starts to process key events for the action system. We can add a
|
// This gets called for ALL events, before the IDE starts to process key events for the action system. We can add a
|
||||||
// dispatcher that checks that the plugin is enabled, checks that the component with the focus is ExTextField,
|
// dispatcher that checks that the plugin is enabled, checks that the component with the focus is ExTextField,
|
||||||
// dispatch to ExEntryPanel#handleKey and if it's processed, mark the event as consumed.
|
// dispatch to ExEntryPanel#handleKey and if it's processed, mark the event as consumed.
|
||||||
if (currentAction != null) {
|
KeyEvent event = new KeyEvent(this, keyChar != KeyEvent.CHAR_UNDEFINED ? KeyEvent.KEY_TYPED :
|
||||||
currentAction.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, String.valueOf(c), modifiers));
|
(stroke.isOnKeyRelease() ? KeyEvent.KEY_RELEASED : KeyEvent.KEY_PRESSED),
|
||||||
}
|
(new Date()).getTime(), modifiers, keyCode, c);
|
||||||
else {
|
|
||||||
KeyEvent event = new KeyEvent(this, keyChar != KeyEvent.CHAR_UNDEFINED ? KeyEvent.KEY_TYPED :
|
|
||||||
(stroke.isOnKeyRelease() ? KeyEvent.KEY_RELEASED : KeyEvent.KEY_PRESSED),
|
|
||||||
(new Date()).getTime(), modifiers, keyCode, c);
|
|
||||||
|
|
||||||
useHandleKeyFromEx = false;
|
useHandleKeyFromEx = false;
|
||||||
try {
|
try {
|
||||||
super.processKeyEvent(event);
|
super.processKeyEvent(event);
|
||||||
}finally {
|
} finally {
|
||||||
useHandleKeyFromEx = true;
|
useHandleKeyFromEx = true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,12 +269,7 @@ public class ExTextField extends JTextField {
|
|||||||
* Cancels current action, if there is one. If not, cancels entry.
|
* Cancels current action, if there is one. If not, cancels entry.
|
||||||
*/
|
*/
|
||||||
void escape() {
|
void escape() {
|
||||||
if (currentAction != null) {
|
cancel();
|
||||||
clearCurrentAction();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cancel();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -299,19 +284,10 @@ public class ExTextField extends JTextField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void clearCurrentAction() {
|
public void clearCurrentAction() {
|
||||||
if (currentAction != null) {
|
|
||||||
currentAction.reset();
|
|
||||||
}
|
|
||||||
currentAction = null;
|
|
||||||
VimCommandLine commandLine = injector.getCommandLine().getActiveCommandLine();
|
VimCommandLine commandLine = injector.getCommandLine().getActiveCommandLine();
|
||||||
if (commandLine != null) commandLine.clearPromptCharacter();
|
if (commandLine != null) commandLine.clearPromptCharacter();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
Action getCurrentAction() {
|
|
||||||
return currentAction;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setInsertMode() {
|
private void setInsertMode() {
|
||||||
ExDocument doc = (ExDocument)getDocument();
|
ExDocument doc = (ExDocument)getDocument();
|
||||||
if (doc.isOverwrite()) {
|
if (doc.isOverwrite()) {
|
||||||
@ -545,7 +521,6 @@ public class ExTextField extends JTextField {
|
|||||||
String lastEntry;
|
String lastEntry;
|
||||||
private List<HistoryEntry> history;
|
private List<HistoryEntry> history;
|
||||||
int histIndex = 0;
|
int histIndex = 0;
|
||||||
private @Nullable MultiStepAction currentAction;
|
|
||||||
int currentActionPromptCharacterOffset = -1;
|
int currentActionPromptCharacterOffset = -1;
|
||||||
|
|
||||||
private static final Logger logger = Logger.getInstance(ExTextField.class.getName());
|
private static final Logger logger = Logger.getInstance(ExTextField.class.getName());
|
||||||
|
Loading…
Reference in New Issue
Block a user