Skip to content

Commit a72c118

Browse files
committed
fix(amazonq): default keybinding for inline chat conflicts
1 parent e676cea commit a72c118

File tree

5 files changed

+37
-2
lines changed

5 files changed

+37
-2
lines changed

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[versions]
22
apache-commons-collections = "4.4"
33
apache-commons-io = "2.16.0"
4+
apache-commons-text = "1.12.0"
45
assertJ = "3.26.3"
56
# match with <root>/settings.gradle.kts
67
awsSdk = "2.26.25"
@@ -70,6 +71,7 @@ aws-sts = { module = "software.amazon.awssdk:sts", version.ref = "awsSdk" }
7071
commonmark = { module = "org.commonmark:commonmark", version.ref = "commonmark" }
7172
commons-collections = { module = "org.apache.commons:commons-collections4", version.ref = "apache-commons-collections" }
7273
commons-io = { module = "commons-io:commons-io", version.ref = "apache-commons-io" }
74+
commons-text = {module = "org.apache.commons:commons-text", version.ref = "apache-commons-text"}
7375
detekt-api = { module = "io.gitlab.arturbosch.detekt:detekt-api", version.ref = "detekt" }
7476
detekt-formattingRules = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" }
7577
diff-util = { module = "io.github.java-diff-utils:java-diff-utils", version.ref = "diff-util" }

plugins/amazonq/chat/jetbrains-community/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ dependencies {
2020
// everything references codewhisperer, which is not ideal
2121
implementation(project(":plugin-amazonq:codewhisperer:jetbrains-community"))
2222
implementation(libs.diff.util)
23+
implementation(libs.commons.text)
2324

2425
compileOnly(project(":plugin-core:jetbrains-community"))
2526

plugins/amazonq/chat/jetbrains-community/resources/META-INF/plugin-chat.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
factoryClass="software.aws.toolkits.jetbrains.services.amazonq.toolwindow.AmazonQToolWindowFactory" icon="AwsIcons.Logos.AWS_Q" />
2121

2222
<postStartupActivity implementation="software.aws.toolkits.jetbrains.services.amazonq.startup.AmazonQStartupActivity"/>
23+
<actionPromoter order="last" implementation="software.aws.toolkits.jetbrains.services.cwc.inline.InlineChatActionPromoter"/>
2324
</extensions>
2425

2526
<extensions defaultExtensionNs="amazon.q">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.cwc.inline
5+
6+
import com.intellij.openapi.actionSystem.ActionPromoter
7+
import com.intellij.openapi.actionSystem.AnAction
8+
import com.intellij.openapi.actionSystem.DataContext
9+
import com.intellij.openapi.keymap.KeymapUtil
10+
import com.intellij.openapi.util.SystemInfo
11+
12+
class InlineChatActionPromoter : ActionPromoter {
13+
override fun promote(actions: MutableList<out AnAction>, context: DataContext): MutableList<AnAction> {
14+
val results = actions.toMutableList()
15+
val shortCut = KeymapUtil.getShortcutText("aws.toolkit.jetbrains.core.services.cwc.inline.openChat")
16+
// only promote for the default key bindings
17+
if (SystemInfo.isMac && shortCut != "⌘I") return results
18+
if (!SystemInfo.isMac && shortCut != "Ctrl+I") return results
19+
20+
results.sortWith { a, b ->
21+
when {
22+
isOpenChatInputAction(a) -> -1
23+
isOpenChatInputAction(b) -> 1
24+
else -> 0
25+
}
26+
}
27+
return results
28+
}
29+
30+
private fun isOpenChatInputAction(action: AnAction): Boolean =
31+
action is OpenChatInputAction
32+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/inline/InlineChatEditorHint.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import com.intellij.codeInsight.hint.HintUtil
88
import com.intellij.openapi.editor.Editor
99
import com.intellij.openapi.editor.VisualPosition
1010
import com.intellij.openapi.keymap.KeymapUtil
11-
import com.intellij.openapi.util.SystemInfo
1211
import com.intellij.ui.LightweightHint
1312
import com.intellij.ui.SimpleColoredText
1413
import com.intellij.ui.SimpleTextAttributes
@@ -68,7 +67,7 @@ class InlineChatEditorHint {
6867
coloredText.appendToComponent(component)
6968
val shortcutComponent = HintUtil.createInformationComponent()
7069
val shortCut = KeymapUtil.getShortcutText("aws.toolkit.jetbrains.core.services.cwc.inline.openChat")
71-
if (!SystemInfo.isWindows && shortCut == "I") {
70+
if (shortCut == "I") {
7271
val shortCutIcon = AwsIcons.Resources.InlineChat.AWS_Q_INLINECHAT_SHORTCUT
7372
shortcutComponent.isIconOnTheRight = true
7473
shortcutComponent.icon = shortCutIcon

0 commit comments

Comments
 (0)