From 75dadc9610cdb84ac92536220fb46e5217a3f47e Mon Sep 17 00:00:00 2001
From: Filipp Vakhitov <filipp.vakhitov@jetbrains.com>
Date: Tue, 25 Feb 2025 15:09:41 +0200
Subject: [PATCH] Fix(VIM-3802): Completion should create undo checkpoint

Do not create checkpoints for Enter keypress
---
 src/main/java/com/maddyhome/idea/vim/listener/IdeaSpecifics.kt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/main/java/com/maddyhome/idea/vim/listener/IdeaSpecifics.kt b/src/main/java/com/maddyhome/idea/vim/listener/IdeaSpecifics.kt
index 0c2839de7..f155bb188 100644
--- a/src/main/java/com/maddyhome/idea/vim/listener/IdeaSpecifics.kt
+++ b/src/main/java/com/maddyhome/idea/vim/listener/IdeaSpecifics.kt
@@ -28,6 +28,7 @@ import com.intellij.openapi.actionSystem.CommonDataKeys
 import com.intellij.openapi.actionSystem.ex.AnActionListener
 import com.intellij.openapi.actionSystem.impl.ProxyShortcutSet
 import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.editor.actions.EnterAction
 import com.intellij.openapi.keymap.KeymapManager
 import com.intellij.openapi.project.DumbAwareToggleAction
 import com.intellij.openapi.util.TextRange
@@ -71,7 +72,7 @@ internal object IdeaSpecifics {
       }
 
       val isVimAction = (action as? AnActionWrapper)?.delegate is VimShortcutKeyAction
-      if (!isVimAction && injector.vimState.mode == Mode.INSERT) {
+      if (!isVimAction && injector.vimState.mode == Mode.INSERT && action !is EnterAction) {
         val undoService = injector.undo as VimTimestampBasedUndoService
         val nanoTime = System.nanoTime()
         editor?.vim?.forEachCaret { undoService.endInsertSequence(it, it.offset, nanoTime) }