mirror of
https://github.com/chylex/IntelliJ-Keyboard-Master.git
synced 2025-04-17 11:15:43 +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 {
|
intellij {
|
||||||
version.set("2021.2.2")
|
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.codeInsight.template.impl.editorActions.TypedActionHandlerBase
|
||||||
import com.intellij.openapi.actionSystem.DataContext
|
import com.intellij.openapi.actionSystem.DataContext
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
|
import com.intellij.openapi.editor.actionSystem.TypedAction
|
||||||
import com.intellij.openapi.editor.actionSystem.TypedActionHandler
|
import com.intellij.openapi.editor.actionSystem.TypedActionHandler
|
||||||
import com.intellij.ui.ScrollingUtil
|
import com.intellij.ui.ScrollingUtil
|
||||||
import javax.swing.ListModel
|
import javax.swing.ListModel
|
||||||
@ -13,7 +14,16 @@ import javax.swing.ListModel
|
|||||||
/**
|
/**
|
||||||
* Handles configured key bindings inside a code completion popup menu.
|
* 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) {
|
override fun execute(editor: Editor, charTyped: Char, dataContext: DataContext) {
|
||||||
if (!executeImpl(editor, charTyped)) {
|
if (!executeImpl(editor, charTyped)) {
|
||||||
myOriginalHandler?.execute(editor, charTyped, dataContext)
|
myOriginalHandler?.execute(editor, charTyped, dataContext)
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
<extensions defaultExtensionNs="com.intellij">
|
<extensions defaultExtensionNs="com.intellij">
|
||||||
<applicationService serviceImplementation="com.chylex.intellij.keyboardmaster.configuration.PluginConfiguration" />
|
<applicationService serviceImplementation="com.chylex.intellij.keyboardmaster.configuration.PluginConfiguration" />
|
||||||
<applicationConfigurable parentId="tools" instance="com.chylex.intellij.keyboardmaster.configuration.PluginConfigurable" id="com.chylex.keyboardmaster" />
|
<applicationConfigurable parentId="tools" instance="com.chylex.intellij.keyboardmaster.configuration.PluginConfigurable" id="com.chylex.keyboardmaster" />
|
||||||
<!--suppress PluginXmlValidity, PluginXmlDynamicPlugin -->
|
<postStartupActivity implementation="com.chylex.intellij.keyboardmaster.PluginStartup" order="last" />
|
||||||
<editorTypedHandler implementationClass="com.chylex.intellij.keyboardmaster.feature.codeCompletion.CodeCompletionPopupKeyHandler" />
|
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
Loading…
Reference in New Issue
Block a user