mirror of
https://github.com/chylex/IntelliJ-Keyboard-Master.git
synced 2025-04-13 18:15:42 +02:00
Work around IdeaVIM stealing keys when renaming elements
This commit is contained in:
parent
f95fd49da1
commit
e0bd7778df
.idea/runConfigurations
build.gradle.ktssrc/main
kotlin/com/chylex/intellij/keyboardmaster
resources/META-INF
26
.idea/runConfigurations/Plugin___IdeaVIM.xml
Normal file
26
.idea/runConfigurations/Plugin___IdeaVIM.xml
Normal file
@ -0,0 +1,26 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Plugin + IdeaVIM" type="GradleRunConfiguration" factoryName="Gradle">
|
||||
<ExternalSystemSettings>
|
||||
<option name="env">
|
||||
<map>
|
||||
<entry key="IDEAVIM" value="1" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" value=":runIde" />
|
||||
<option name="taskDescriptions">
|
||||
<list />
|
||||
</option>
|
||||
<option name="taskNames">
|
||||
<list />
|
||||
</option>
|
||||
<option name="vmOptions" />
|
||||
</ExternalSystemSettings>
|
||||
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
|
||||
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
|
||||
<DebugAllEnabled>false</DebugAllEnabled>
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
@ -19,4 +19,8 @@ dependencies {
|
||||
|
||||
intellij {
|
||||
version.set("2021.2.2")
|
||||
|
||||
if (System.getenv("IDEAVIM") == "1") {
|
||||
plugins.add("IdeaVIM:0.66")
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
package com.chylex.intellij.keyboardmaster
|
||||
|
||||
import com.chylex.intellij.keyboardmaster.feature.codeCompletion.CodeCompletionPopupKeyHandler
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.startup.StartupActivity
|
||||
|
||||
class PluginStartup : StartupActivity.DumbAware {
|
||||
private var isInitialized = false
|
||||
|
||||
override fun runActivity(project: Project) {
|
||||
if (!isInitialized) {
|
||||
isInitialized = true
|
||||
|
||||
val application = ApplicationManager.getApplication()
|
||||
if (application.isUnitTestMode) {
|
||||
CodeCompletionPopupKeyHandler.registerRawHandler()
|
||||
}
|
||||
else {
|
||||
application.invokeLater(CodeCompletionPopupKeyHandler.Companion::registerRawHandler)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import com.intellij.codeInsight.lookup.impl.LookupImpl
|
||||
import com.intellij.codeInsight.template.impl.editorActions.TypedActionHandlerBase
|
||||
import com.intellij.openapi.actionSystem.DataContext
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.actionSystem.TypedAction
|
||||
import com.intellij.openapi.editor.actionSystem.TypedActionHandler
|
||||
import com.intellij.ui.ScrollingUtil
|
||||
import javax.swing.ListModel
|
||||
@ -13,7 +14,16 @@ import javax.swing.ListModel
|
||||
/**
|
||||
* Handles configured key bindings inside a code completion popup menu.
|
||||
*/
|
||||
class CodeCompletionPopupKeyHandler(originalHandler: TypedActionHandler?) : TypedActionHandlerBase(originalHandler) {
|
||||
class CodeCompletionPopupKeyHandler private constructor(originalHandler: TypedActionHandler?) : TypedActionHandlerBase(originalHandler) {
|
||||
companion object {
|
||||
/**
|
||||
* Registers the key handler as a raw handler, because IdeaVIM steals keys from Keyboard Master when renaming an element in normal mode.
|
||||
*/
|
||||
fun registerRawHandler() {
|
||||
TypedAction.getInstance().let { it.setupRawHandler(CodeCompletionPopupKeyHandler(it.rawHandler)) }
|
||||
}
|
||||
}
|
||||
|
||||
override fun execute(editor: Editor, charTyped: Char, dataContext: DataContext) {
|
||||
if (!executeImpl(editor, charTyped)) {
|
||||
myOriginalHandler?.execute(editor, charTyped, dataContext)
|
||||
|
@ -19,7 +19,6 @@
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<applicationService serviceImplementation="com.chylex.intellij.keyboardmaster.configuration.PluginConfiguration" />
|
||||
<applicationConfigurable parentId="tools" instance="com.chylex.intellij.keyboardmaster.configuration.PluginConfigurable" id="com.chylex.keyboardmaster" />
|
||||
<!--suppress PluginXmlValidity, PluginXmlDynamicPlugin -->
|
||||
<editorTypedHandler implementationClass="com.chylex.intellij.keyboardmaster.feature.codeCompletion.CodeCompletionPopupKeyHandler" />
|
||||
<postStartupActivity implementation="com.chylex.intellij.keyboardmaster.PluginStartup" order="last" />
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
|
Loading…
Reference in New Issue
Block a user