mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java, completion] IJPL-207762 NegationInsertHandler is frontend-friendly
GitOrigin-RevId: a35b125635771142dd91abc25687431c1a14b111
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6703a7363c
commit
6bf7cc68a0
@@ -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>
|
||||
|
||||
+27
@@ -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, "!")
|
||||
}
|
||||
}
|
||||
+4
-10
@@ -13,7 +13,6 @@ import com.intellij.codeInsight.hint.api.impls.MethodParameterInfoHandler
|
||||
import com.intellij.codeInsight.hints.ParameterHintsPass
|
||||
import com.intellij.codeInsight.lookup.Lookup
|
||||
import com.intellij.codeInsight.lookup.LookupElement
|
||||
import com.intellij.featureStatistics.FeatureUsageTracker
|
||||
import com.intellij.injected.editor.EditorWindow
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.editor.Document
|
||||
@@ -75,7 +74,7 @@ public class JavaMethodCallInsertHandler(
|
||||
ImportQualifyAndInsertTypeParametersHandler.create(needImportOrQualify, needExplicitTypeParameters, item),
|
||||
MethodCallInstallerHandler(),
|
||||
MethodCallRegistrationHandler(),
|
||||
NegationInsertHandler(),
|
||||
createNegationInsertHandler(item),
|
||||
afterHandler,
|
||||
ArgumentLiveTemplateInsertHandler(canStartArgumentLiveTemplate),
|
||||
ShowParameterInfoInsertHandler(),
|
||||
@@ -286,14 +285,9 @@ private class ImportQualifyAndInsertTypeParametersHandler private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private class NegationInsertHandler : InsertHandler<JavaMethodCallElement> {
|
||||
override fun handleInsert(context: InsertionContext, item: JavaMethodCallElement) {
|
||||
if (context.completionChar != '!' || !item.isNegatable) return
|
||||
val methodCall = findInsertedCall(item, context) ?: return
|
||||
context.setAddCompletionChar(false)
|
||||
FeatureUsageTracker.getInstance().triggerFeatureUsed(EXCLAMATION_FINISH)
|
||||
context.document.insertString(methodCall.textRange.startOffset, "!")
|
||||
}
|
||||
private fun createNegationInsertHandler(item: JavaMethodCallElement): InsertHandler<in JavaMethodCallElement>? {
|
||||
if (!item.isNegatable) return null
|
||||
return NegationInsertHandler()
|
||||
}
|
||||
|
||||
private class ArgumentLiveTemplateInsertHandler(
|
||||
|
||||
Reference in New Issue
Block a user