[java, completion] IJPL-207762 NegationInsertHandler is frontend-friendly

GitOrigin-RevId: a35b125635771142dd91abc25687431c1a14b111
This commit is contained in:
Max Medvedev
2025-10-14 23:17:16 +00:00
committed by intellij-monorepo-bot
parent 6703a7363c
commit 6bf7cc68a0
3 changed files with 32 additions and 10 deletions
@@ -82,6 +82,7 @@
<completion.frontendFriendlyInsertHandler implementationClass="com.intellij.codeInsight.completion.method.DiamondInsertHandler"/>
<completion.frontendFriendlyInsertHandler implementationClass="com.intellij.codeInsight.completion.method.RefStartInsertHandler"/>
<completion.frontendFriendlyInsertHandler implementationClass="com.intellij.codeInsight.completion.method.MethodCallInstallerHandler"/>
<completion.frontendFriendlyInsertHandler implementationClass="com.intellij.codeInsight.completion.method.NegationInsertHandler"/>
</extensions>
</idea-plugin>
@@ -0,0 +1,27 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.codeInsight.completion.method
import com.intellij.codeInsight.completion.CodeCompletionFeatures
import com.intellij.codeInsight.completion.FrontendFriendlyInsertHandler
import com.intellij.codeInsight.completion.InsertionContext
import com.intellij.codeInsight.completion.method.JavaMethodCallInsertHandlerHelper.findInsertedCall
import com.intellij.codeInsight.lookup.LookupElement
import com.intellij.featureStatistics.FeatureUsageTracker
import kotlinx.serialization.Serializable
import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
@Serializable
class NegationInsertHandler : FrontendFriendlyInsertHandler {
override fun handleInsert(context: InsertionContext, item: LookupElement) {
if (context.completionChar != '!') return
val methodCall = findInsertedCall(item, context) ?: return
//TODO IJPL-207762 where do we want statistics?
FeatureUsageTracker.getInstance().triggerFeatureUsed(CodeCompletionFeatures.EXCLAMATION_FINISH)
context.setAddCompletionChar(false)
context.document.insertString(methodCall.textRange.startOffset, "!")
}
}