From abdb6cb906fd1637e559f5b76020c3c812406876 Mon Sep 17 00:00:00 2001
From: Alex Plate <aleksei.plate@jetbrains.com>
Date: Fri, 14 Mar 2025 13:39:36 +0200
Subject: [PATCH] Fix(VIM-3825): Proper processing of enter for Rider & similar
 IDEs

---
 .../java/com/maddyhome/idea/vim/handler/VimEnterHandler.kt   | 5 -----
 .../java/com/maddyhome/idea/vim/newapi/IjVimApplication.kt   | 5 +++++
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/maddyhome/idea/vim/handler/VimEnterHandler.kt b/src/main/java/com/maddyhome/idea/vim/handler/VimEnterHandler.kt
index 57c5662d0..1e17dcc19 100644
--- a/src/main/java/com/maddyhome/idea/vim/handler/VimEnterHandler.kt
+++ b/src/main/java/com/maddyhome/idea/vim/handler/VimEnterHandler.kt
@@ -25,7 +25,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
 import com.intellij.openapi.util.Key
 import com.intellij.openapi.util.UserDataHolder
 import com.intellij.openapi.util.removeUserData
-import com.intellij.util.PlatformUtils
 import com.maddyhome.idea.vim.KeyHandler
 import com.maddyhome.idea.vim.VimPlugin
 import com.maddyhome.idea.vim.api.injector
@@ -36,8 +35,6 @@ import com.maddyhome.idea.vim.helper.IjActionExecutor
 import com.maddyhome.idea.vim.helper.inNormalMode
 import com.maddyhome.idea.vim.helper.isPrimaryEditor
 import com.maddyhome.idea.vim.helper.updateCaretsVisualAttributes
-import com.maddyhome.idea.vim.ide.isClionNova
-import com.maddyhome.idea.vim.ide.isRider
 import com.maddyhome.idea.vim.newapi.actionStartedFromVim
 import com.maddyhome.idea.vim.newapi.globalIjOptions
 import com.maddyhome.idea.vim.newapi.vim
@@ -365,8 +362,6 @@ internal fun isOctopusEnabled(s: KeyStroke, editor: Editor): Boolean {
   // CMD line has a different processing mechanizm: the processing actions are registered
   //   for the input field component. These keys are not dispatched via the octopus handler.
   if (editor.vim.mode is Mode.CMD_LINE) return false
-  // Turn off octopus for some IDEs. They have issues with ENTER and ESC on the octopus like VIM-3815
-  if (isRider() || PlatformUtils.isJetBrainsClient() || isClionNova()) return false
   when {
     s.keyCode == KeyEvent.VK_ENTER && s.modifiers == 0 -> return true
     s.keyCode == KeyEvent.VK_ESCAPE && s.modifiers == 0 -> return true
diff --git a/src/main/java/com/maddyhome/idea/vim/newapi/IjVimApplication.kt b/src/main/java/com/maddyhome/idea/vim/newapi/IjVimApplication.kt
index 7fed24cd4..fa35eedf0 100644
--- a/src/main/java/com/maddyhome/idea/vim/newapi/IjVimApplication.kt
+++ b/src/main/java/com/maddyhome/idea/vim/newapi/IjVimApplication.kt
@@ -13,9 +13,12 @@ import com.intellij.openapi.application.ModalityState
 import com.intellij.openapi.components.Service
 import com.intellij.openapi.util.Computable
 import com.intellij.util.ExceptionUtil
+import com.intellij.util.PlatformUtils
 import com.maddyhome.idea.vim.api.VimApplicationBase
 import com.maddyhome.idea.vim.api.VimEditor
 import com.maddyhome.idea.vim.diagnostic.vimLogger
+import com.maddyhome.idea.vim.ide.isClionNova
+import com.maddyhome.idea.vim.ide.isRider
 import java.awt.Component
 import java.awt.Toolkit
 import java.awt.Window
@@ -74,6 +77,8 @@ internal class IjVimApplication : VimApplicationBase() {
   }
 
   override fun isOctopusEnabled(): Boolean {
+    // Turn off octopus for some IDEs. They have issues with ENTER and ESC on the octopus like VIM-3815
+    if (isRider() || PlatformUtils.isJetBrainsClient() || isClionNova()) return false
     val property = System.getProperty("octopus.handler") ?: "true"
     if (property.isBlank()) return true
     return property.toBoolean()