1
0
mirror of https://github.com/chylex/IntelliJ-IdeaVim.git synced 2025-05-02 19:34:04 +02:00

Fix(VIM-3825): Proper processing of enter for Rider & similar IDEs

This commit is contained in:
Alex Plate 2025-03-14 13:39:36 +02:00
parent 46f9aa4df2
commit abdb6cb906
No known key found for this signature in database
GPG Key ID: 0B97153C8FFEC09F
2 changed files with 5 additions and 5 deletions
src/main/java/com/maddyhome/idea/vim

View File

@ -25,7 +25,6 @@ import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.util.Key import com.intellij.openapi.util.Key
import com.intellij.openapi.util.UserDataHolder import com.intellij.openapi.util.UserDataHolder
import com.intellij.openapi.util.removeUserData import com.intellij.openapi.util.removeUserData
import com.intellij.util.PlatformUtils
import com.maddyhome.idea.vim.KeyHandler import com.maddyhome.idea.vim.KeyHandler
import com.maddyhome.idea.vim.VimPlugin import com.maddyhome.idea.vim.VimPlugin
import com.maddyhome.idea.vim.api.injector 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.inNormalMode
import com.maddyhome.idea.vim.helper.isPrimaryEditor import com.maddyhome.idea.vim.helper.isPrimaryEditor
import com.maddyhome.idea.vim.helper.updateCaretsVisualAttributes 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.actionStartedFromVim
import com.maddyhome.idea.vim.newapi.globalIjOptions import com.maddyhome.idea.vim.newapi.globalIjOptions
import com.maddyhome.idea.vim.newapi.vim 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 // 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. // for the input field component. These keys are not dispatched via the octopus handler.
if (editor.vim.mode is Mode.CMD_LINE) return false 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 { when {
s.keyCode == KeyEvent.VK_ENTER && s.modifiers == 0 -> return true s.keyCode == KeyEvent.VK_ENTER && s.modifiers == 0 -> return true
s.keyCode == KeyEvent.VK_ESCAPE && s.modifiers == 0 -> return true s.keyCode == KeyEvent.VK_ESCAPE && s.modifiers == 0 -> return true

View File

@ -13,9 +13,12 @@ import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.components.Service import com.intellij.openapi.components.Service
import com.intellij.openapi.util.Computable import com.intellij.openapi.util.Computable
import com.intellij.util.ExceptionUtil import com.intellij.util.ExceptionUtil
import com.intellij.util.PlatformUtils
import com.maddyhome.idea.vim.api.VimApplicationBase import com.maddyhome.idea.vim.api.VimApplicationBase
import com.maddyhome.idea.vim.api.VimEditor import com.maddyhome.idea.vim.api.VimEditor
import com.maddyhome.idea.vim.diagnostic.vimLogger 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.Component
import java.awt.Toolkit import java.awt.Toolkit
import java.awt.Window import java.awt.Window
@ -74,6 +77,8 @@ internal class IjVimApplication : VimApplicationBase() {
} }
override fun isOctopusEnabled(): Boolean { 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" val property = System.getProperty("octopus.handler") ?: "true"
if (property.isBlank()) return true if (property.isBlank()) return true
return property.toBoolean() return property.toBoolean()