From cde9bc94e6627739788a959dd94f9e700eeed518 Mon Sep 17 00:00:00 2001 From: Filipp Vakhitov <filipp.vakhitov@jetbrains.com> Date: Mon, 16 Sep 2024 00:44:24 +0300 Subject: [PATCH] Fix select mode for immutable caret Due to implementation details, caret cannot be moved after setting selection --- .../action/motion/select/SelectEnableCharacterModeAction.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt index 7bfc77fee..2266c2b91 100644 --- a/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt +++ b/vim-engine/src/main/kotlin/com/maddyhome/idea/vim/action/motion/select/SelectEnableCharacterModeAction.kt @@ -37,10 +37,10 @@ class SelectEnableCharacterModeAction : VimActionHandler.SingleExecution() { ): Boolean { editor.nativeCarets().sortedByDescending { it.offset }.forEach { caret -> val lineEnd = editor.getLineEndForOffset(caret.offset) + val offset = caret.offset val nextOffset = (caret.offset + 1).coerceAtMost(lineEnd) - caret.vimSetSystemSelectionSilently(caret.offset, nextOffset) - val updatedCaret = editor.findLastVersionOfCaret(caret) ?: return@forEach - updatedCaret.moveToInlayAwareOffset(nextOffset) + val updatedCaret = caret.moveToInlayAwareOffset(nextOffset) + updatedCaret.vimSetSystemSelectionSilently(offset, nextOffset) } return injector.visualMotionGroup.enterSelectMode(editor, SelectionType.CHARACTER_WISE) }