1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-08-13 14:17:07 +02:00

[VIM-3577] Store the information if the editor was initialized in insert mode

This commit is contained in:
Alex Plate
2024-12-18 13:19:14 +02:00
parent 5e60ea7f4c
commit c225452432
2 changed files with 7 additions and 3 deletions
src/main/java/com/maddyhome/idea/vim/listener
vim-engine/src/main/kotlin/com/maddyhome/idea/vim

@@ -59,15 +59,16 @@ class IJEditorFocusListener : EditorListener {
val ijEditor = editor.ij
val isCurrentEditorTerminal = isTerminal(ijEditor)
KeyHandler.getInstance().lastUsedEditorInfo = LastUsedEditorInfo(currentEditorHashCode, isCurrentEditorTerminal)
KeyHandler.getInstance().lastUsedEditorInfo = LastUsedEditorInfo(currentEditorHashCode, false)
val switchToInsertMode = Runnable {
val context: ExecutionContext = injector.executionContextManager.getEditorExecutionContext(editor)
VimPlugin.getChange().insertBeforeCursor(editor, context)
KeyHandler.getInstance().lastUsedEditorInfo = LastUsedEditorInfo(currentEditorHashCode, true)
}
if (isCurrentEditorTerminal && !ijEditor.inInsertMode) {
switchToInsertMode.run()
} else if (ijEditor.isInsertMode && (oldEditorInfo.isTerminal || !ijEditor.document.isWritable)) {
} else if (ijEditor.isInsertMode && (oldEditorInfo.isInsertModeForced || !ijEditor.document.isWritable)) {
val context: ExecutionContext = injector.executionContextManager.getEditorExecutionContext(editor)
val mode = injector.vimState.mode
when (mode) {

@@ -479,5 +479,8 @@ typealias KeyProcessing = (KeyHandlerState, VimEditor, ExecutionContext) -> Unit
data class LastUsedEditorInfo(
val hash: Int,
val isTerminal: Boolean,
/**
* If true, this editor was initialized in insert mode
*/
val isInsertModeForced: Boolean,
)