Skip to content

Commit 3fd6191

Browse files
committed
fix a bug in userInput + typeahead case
1 parent 44b163f commit 3fd6191

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupComponents.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,17 @@ class CodeWhispererPopupComponents {
4949
message(
5050
"codewhisperer.popup.button.prev",
5151
POPUP_DIM_HEX,
52-
run {
53-
KeymapUtil.getFirstKeyboardShortcutText(
54-
ActionManager.getInstance().getAction("codewhisperer.inline.navigate.previous")
55-
)
56-
}
52+
KeymapUtil.getFirstKeyboardShortcutText(
53+
ActionManager.getInstance().getAction("codewhisperer.inline.navigate.previous")
54+
)
5755
)
5856
val nextButton = createNavigationButton(nextButtonText()).apply { preferredSize = prevButton.preferredSize }
5957
fun nextButtonText() = message(
6058
"codewhisperer.popup.button.next",
6159
POPUP_DIM_HEX,
62-
run {
63-
KeymapUtil.getFirstKeyboardShortcutText(
64-
ActionManager.getInstance().getAction("codewhisperer.inline.navigate.next")
65-
)
66-
}
60+
KeymapUtil.getFirstKeyboardShortcutText(
61+
ActionManager.getInstance().getAction("codewhisperer.inline.navigate.next")
62+
)
6763
)
6864
val acceptButton = createNavigationButton(
6965
message("codewhisperer.popup.button.accept", POPUP_DIM_HEX)

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/CodeWhispererPopupManager.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,21 @@ class CodeWhispererPopupManager {
137137
val typeaheadOriginal = run {
138138
val startOffset = states.requestContext.caretPosition.offset
139139
val currOffset = states.requestContext.editor.caretModel.offset
140-
if (startOffset > currOffset || removedLength > sessionContext.typeaheadOriginal.length) {
140+
if (startOffset > currOffset) {
141141
cancelPopup(popup)
142142
return
143143
}
144-
states.requestContext.editor.document.charsSequence
144+
145+
// userInput + typeahead
146+
val prefix = states.requestContext.editor.document.charsSequence
145147
.substring(startOffset, currOffset)
146-
.substring(userInputOriginal.length)
148+
if (prefix.length < userInputOriginal.length) {
149+
cancelPopup(popup)
150+
return
151+
} else {
152+
prefix.substring(userInputOriginal.length)
153+
}
154+
147155
}
148156
val isReverse = indexChange < 0
149157
val validCount = getValidCount(details, userInput, typeaheadOriginal)
@@ -427,6 +435,7 @@ class CodeWhispererPopupManager {
427435
}
428436

429437
override fun type(states: InvocationContext, diff: String) {
438+
changeStates(states, 0)
430439
val caretOffset = states.requestContext.editor.caretModel.primaryCaret.offset
431440
val document = states.requestContext.editor.document
432441
val text = document.charsSequence
@@ -435,7 +444,6 @@ class CodeWhispererPopupManager {
435444
document.deleteString(caretOffset, caretOffset + 1)
436445
}
437446
}
438-
changeStates(states, 0)
439447
}
440448

441449
override fun beforeAccept(states: InvocationContext, sessionContext: SessionContext) {

0 commit comments

Comments
 (0)