diff --git a/.changes/next-release/bugfix-2488e2f1-f725-4e01-b38a-8b6953cf5f18.json b/.changes/next-release/bugfix-2488e2f1-f725-4e01-b38a-8b6953cf5f18.json new file mode 100644 index 00000000000..37969f57f3a --- /dev/null +++ b/.changes/next-release/bugfix-2488e2f1-f725-4e01-b38a-8b6953cf5f18.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "Skip inline completion when deleting characters" +} \ No newline at end of file diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src-242/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src-242/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt index 345078fe203..018b047eb26 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src-242/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src-242/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt @@ -19,3 +19,6 @@ fun getManualCallEvent(editor: Editor, isIntelliSenseAccept: Boolean): InlineCom } return InlineCompletionEvent.DirectCall(editor, editor.caretModel.currentCaret, dataContext) } + +@Suppress("FunctionOnlyReturningConstant") +fun InlineCompletionEvent.isDeletion(): Boolean = false diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src-243+/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src-243+/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt index 1f6e8dd7c06..e3a0dc25bd1 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src-243+/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src-243+/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QManualCall.kt @@ -15,3 +15,6 @@ fun getManualCallEvent(editor: Editor, isIntelliSenseAccept: Boolean): InlineCom val data = UserDataHolderBase().apply { this.putUserData(KEY_Q_AUTO_TRIGGER_INTELLISENSE, isIntelliSenseAccept) } return InlineCompletionEvent.ManualCall(editor, Q_INLINE_PROVIDER_ID, data) } + +fun InlineCompletionEvent.isDeletion(): Boolean = + this is InlineCompletionEvent.Backspace diff --git a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QInlineCompletionProvider.kt b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QInlineCompletionProvider.kt index a092798cb67..81c14fdf150 100644 --- a/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QInlineCompletionProvider.kt +++ b/plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/popup/QInlineCompletionProvider.kt @@ -404,6 +404,14 @@ class QInlineCompletionProvider(private val cs: CoroutineScope) : InlineCompleti CodeWhispererInvocationStatus.getInstance().setIsInvokingQInline(session, false) } + // this is only available in 2024.3+ + if (request.event.isDeletion()) { + logInline(triggerSessionId) { + "Skip inline completion when deleting" + } + return InlineCompletionSuggestion.Empty + } + val sessionContext = InlineCompletionSessionContext(triggerOffset = request.endOffset) // Pagination workaround: Always return exactly 5 variants