From a78f66fd36d6a6d38a7ec4395ae84d96c615a14a Mon Sep 17 00:00:00 2001 From: filipp <filipp.vakhitov@jetbrains.com> Date: Tue, 14 Mar 2023 00:10:05 +0200 Subject: [PATCH] Better multiple caret support for surround --- .../vim/extension/surround/VimSurroundExtension.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/maddyhome/idea/vim/extension/surround/VimSurroundExtension.kt b/src/main/java/com/maddyhome/idea/vim/extension/surround/VimSurroundExtension.kt index 4210dba46..f909183a4 100644 --- a/src/main/java/com/maddyhome/idea/vim/extension/surround/VimSurroundExtension.kt +++ b/src/main/java/com/maddyhome/idea/vim/extension/surround/VimSurroundExtension.kt @@ -239,19 +239,19 @@ internal class VimSurroundExtension : VimExtension { val pair = getOrInputPair(c, ijEditor) ?: return false // XXX: Will it work with line-wise or block-wise selections? - val range = getSurroundRange(ijEditor) ?: return false + val range = getSurroundRange(editor.currentCaret()) ?: return false performSurround(pair, range, editor.currentCaret()) // Jump back to start executeNormalWithoutMapping(injector.parser.parseKeys("`["), ijEditor) return true } - // todo make it multicaret - private fun getSurroundRange(editor: Editor): TextRange? { - val vimEditor = editor.vim - return when (editor.editorMode) { - VimStateMachine.Mode.COMMAND -> injector.markService.getChangeMarks(vimEditor.primaryCaret()) - VimStateMachine.Mode.VISUAL -> editor.caretModel.primaryCaret.run { TextRange(selectionStart, selectionEnd) } + private fun getSurroundRange(caret: VimCaret): TextRange? { + val editor = caret.editor + val ijEditor = editor.ij + return when (ijEditor.editorMode) { + VimStateMachine.Mode.COMMAND -> injector.markService.getChangeMarks(caret) + VimStateMachine.Mode.VISUAL -> caret.run { TextRange(selectionStart, selectionEnd) } else -> null } }