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:
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,
|
||||
)
|
Reference in New Issue
Block a user