diff --git a/src/main/java/com/maddyhome/idea/vim/group/copy/PutGroup.kt b/src/main/java/com/maddyhome/idea/vim/group/copy/PutGroup.kt index f3f52142de..da4d76f571 100644 --- a/src/main/java/com/maddyhome/idea/vim/group/copy/PutGroup.kt +++ b/src/main/java/com/maddyhome/idea/vim/group/copy/PutGroup.kt @@ -46,6 +46,7 @@ import com.maddyhome.idea.vim.put.PutData import com.maddyhome.idea.vim.put.VimPasteProvider import com.maddyhome.idea.vim.put.VimPutBase import com.maddyhome.idea.vim.register.RegisterConstants +import com.maddyhome.idea.vim.state.mode.Mode import com.maddyhome.idea.vim.state.mode.SelectionType import com.maddyhome.idea.vim.state.mode.isBlock import com.maddyhome.idea.vim.state.mode.isChar @@ -83,7 +84,7 @@ internal class PutGroup : VimPutBase() { val editor = (vimEditor as IjVimEditor).editor val context = vimContext.context as DataContext val carets: MutableMap = mutableMapOf() - if (editor.isInsertMode) { + if (injector.vimState.mode is Mode.INSERT) { val undo = injector.undo val nanoTime = System.nanoTime() vimEditor.forEachCaret { undo.startInsertSequence(it, it.offset, nanoTime) } diff --git a/src/main/java/com/maddyhome/idea/vim/newapi/IjVimEditor.kt b/src/main/java/com/maddyhome/idea/vim/newapi/IjVimEditor.kt index 1905e77cf5..6c365a4580 100644 --- a/src/main/java/com/maddyhome/idea/vim/newapi/IjVimEditor.kt +++ b/src/main/java/com/maddyhome/idea/vim/newapi/IjVimEditor.kt @@ -119,7 +119,7 @@ internal class IjVimEditor(editor: Editor) : MutableLinearEditor() { } override fun insertText(caret: VimCaret, atPosition: Int, text: CharSequence) { - if (editor.isInsertMode) { + if (injector.vimState.mode is Mode.INSERT) { injector.undo.startInsertSequence(caret, atPosition, System.nanoTime()) } editor.document.insertString(atPosition, text) diff --git a/src/test/java/org/jetbrains/plugins/ideavim/action/change/UndoActionTest.kt b/src/test/java/org/jetbrains/plugins/ideavim/action/change/UndoActionTest.kt index 80f76e59c4..28daf1b9a6 100644 --- a/src/test/java/org/jetbrains/plugins/ideavim/action/change/UndoActionTest.kt +++ b/src/test/java/org/jetbrains/plugins/ideavim/action/change/UndoActionTest.kt @@ -146,7 +146,17 @@ class UndoActionTest : VimTestCase() { @TestFor(issues = ["VIM-547"]) fun `test change action is included in insert sequence`() { configureByText("Lorem ${c}ipsum dolor sit amet") - typeText("celorem") + typeText("celorem") + assertState("Lorem lore${c}m dolor sit amet") + typeText("u") + assertState("Lorem ${c}ipsum dolor sit amet") + } + + @Test + @TestFor(issues = ["VIM-3552"]) + fun `test paste is not part of undo sequence`() { + configureByText("test") + typeText("yypoxxxu") configureByText("Lorem lorem${c} dolor sit amet") typeText("u") configureByText("Lorem ${c}ipsum dolor sit amet")