From c6b33c9ec50d11beabce2c9e59196d357069d1d9 Mon Sep 17 00:00:00 2001 From: "Kirill.Karnaukhov" Date: Thu, 24 Oct 2024 12:11:01 +0200 Subject: [PATCH] [inline-completion] IJPL-161906: do not register all the inline completion listeners on backend (cherry picked from commit 7f45dc74717ce54565a3eb79a07a5a622af17075) IJ-MR-147762 GitOrigin-RevId: b4e71aa97550cc47b8155c8466f09ea654e81673 --- ...intellij.platform.inline.completion.frontend.iml | 1 + .../frontend/src/FrontendInlineCompletionHandler.kt | 6 ++++++ .../src}/InlineCompletionNoSuggestionsListener.kt | 13 +++++-------- .../InlineCompletionOnboardingListener.kt | 5 +++-- .../inline/completion/InlineCompletionHandler.kt | 2 -- .../completion/tooltip/InlineCompletionTooltip.kt | 4 +++- .../InlineCompletionOnboardingComponent.kt | 2 +- .../src/META-INF/LangExtensions.xml | 2 -- 8 files changed, 19 insertions(+), 16 deletions(-) rename platform/{lang-impl/src/com/intellij/codeInsight/inline/completion => inline-completion/frontend/src}/InlineCompletionNoSuggestionsListener.kt (67%) rename platform/{platform-impl/src/com/intellij/codeInsight/inline/completion => inline-completion/frontend/src}/tooltip/onboarding/InlineCompletionOnboardingListener.kt (85%) diff --git a/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml b/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml index 240857b3898b..1969f56b236b 100644 --- a/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml +++ b/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml @@ -11,5 +11,6 @@ + \ No newline at end of file diff --git a/platform/inline-completion/frontend/src/FrontendInlineCompletionHandler.kt b/platform/inline-completion/frontend/src/FrontendInlineCompletionHandler.kt index 10ac057820e1..17a85c9fdfd1 100644 --- a/platform/inline-completion/frontend/src/FrontendInlineCompletionHandler.kt +++ b/platform/inline-completion/frontend/src/FrontendInlineCompletionHandler.kt @@ -2,6 +2,7 @@ package com.intellij.codeInsight.inline.completion.frontend import com.intellij.codeInsight.inline.completion.* +import com.intellij.codeInsight.inline.completion.frontend.tooltip.onboarding.InlineCompletionOnboardingListener import com.intellij.codeInsight.inline.completion.logs.InlineCompletionUsageTracker.ShownEvents.FinishType import com.intellij.codeInsight.inline.completion.session.InlineCompletionContext import com.intellij.codeInsight.inline.completion.session.InlineCompletionSession @@ -17,6 +18,11 @@ internal class FrontendInlineCompletionHandler( parentDisposable: Disposable ) : InlineCompletionHandler(scope, editor, parentDisposable) { + init { + addEventListener(InlineCompletionNoSuggestionsListener(editor)) + InlineCompletionOnboardingListener.createIfOnboarding(editor)?.let(::addEventListener) + } + override fun startSessionOrNull(request: InlineCompletionRequest, provider: InlineCompletionProvider): InlineCompletionSession? { return sessionManager.createSession(provider, request, parentDisposable, specificId = null) } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/inline/completion/InlineCompletionNoSuggestionsListener.kt b/platform/inline-completion/frontend/src/InlineCompletionNoSuggestionsListener.kt similarity index 67% rename from platform/lang-impl/src/com/intellij/codeInsight/inline/completion/InlineCompletionNoSuggestionsListener.kt rename to platform/inline-completion/frontend/src/InlineCompletionNoSuggestionsListener.kt index a298f294c809..a4c192172168 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/inline/completion/InlineCompletionNoSuggestionsListener.kt +++ b/platform/inline-completion/frontend/src/InlineCompletionNoSuggestionsListener.kt @@ -1,13 +1,16 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.codeInsight.inline.completion +package com.intellij.codeInsight.inline.completion.frontend import com.intellij.codeInsight.hint.HintManager +import com.intellij.codeInsight.inline.completion.InlineCompletionEvent +import com.intellij.codeInsight.inline.completion.InlineCompletionEventAdapter +import com.intellij.codeInsight.inline.completion.InlineCompletionEventType import com.intellij.codeInsight.inline.completion.logs.InlineCompletionUsageTracker import com.intellij.codeInsight.inline.completion.session.InlineCompletionSession import com.intellij.lang.LangBundle import com.intellij.openapi.editor.Editor -private class InlineCompletionNoSuggestionsListener(private val editor: Editor) : InlineCompletionEventAdapter { +internal class InlineCompletionNoSuggestionsListener(private val editor: Editor) : InlineCompletionEventAdapter { override fun onHide(event: InlineCompletionEventType.Hide) { if (event.finishType == InlineCompletionUsageTracker.ShownEvents.FinishType.EMPTY) { @@ -18,9 +21,3 @@ private class InlineCompletionNoSuggestionsListener(private val editor: Editor) } } } - -private class InlineCompletionNoSuggestionListenerInstaller : InlineCompletionInstallListener { - override fun handlerInstalled(editor: Editor, handler: InlineCompletionHandler) { - handler.addEventListener(InlineCompletionNoSuggestionsListener(editor)) - } -} diff --git a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/onboarding/InlineCompletionOnboardingListener.kt b/platform/inline-completion/frontend/src/tooltip/onboarding/InlineCompletionOnboardingListener.kt similarity index 85% rename from platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/onboarding/InlineCompletionOnboardingListener.kt rename to platform/inline-completion/frontend/src/tooltip/onboarding/InlineCompletionOnboardingListener.kt index a598322d2c4a..2d87392e515f 100644 --- a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/onboarding/InlineCompletionOnboardingListener.kt +++ b/platform/inline-completion/frontend/src/tooltip/onboarding/InlineCompletionOnboardingListener.kt @@ -1,10 +1,11 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. -package com.intellij.codeInsight.inline.completion.tooltip.onboarding +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.codeInsight.inline.completion.frontend.tooltip.onboarding import com.intellij.codeInsight.inline.completion.InlineCompletionEventAdapter import com.intellij.codeInsight.inline.completion.InlineCompletionEventType import com.intellij.codeInsight.inline.completion.session.InlineCompletionSession import com.intellij.codeInsight.inline.completion.tooltip.InlineCompletionTooltip +import com.intellij.codeInsight.inline.completion.tooltip.onboarding.InlineCompletionOnboardingComponent import com.intellij.openapi.editor.Editor internal class InlineCompletionOnboardingListener private constructor(private val editor: Editor) : InlineCompletionEventAdapter { diff --git a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/InlineCompletionHandler.kt b/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/InlineCompletionHandler.kt index cdfa12b50b4f..3e5a3095be3b 100644 --- a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/InlineCompletionHandler.kt +++ b/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/InlineCompletionHandler.kt @@ -15,7 +15,6 @@ import com.intellij.codeInsight.inline.completion.session.InlineCompletionSessio import com.intellij.codeInsight.inline.completion.suggestion.InlineCompletionSuggestion import com.intellij.codeInsight.inline.completion.suggestion.InlineCompletionVariant import com.intellij.codeInsight.inline.completion.suggestion.InlineCompletionVariantsComputer -import com.intellij.codeInsight.inline.completion.tooltip.onboarding.InlineCompletionOnboardingListener import com.intellij.codeInsight.inline.completion.utils.SafeInlineCompletionExecutor import com.intellij.codeInsight.lookup.LookupManager import com.intellij.inlinePrompt.isInlinePromptShown @@ -81,7 +80,6 @@ abstract class InlineCompletionHandler @ApiStatus.Internal constructor( init { addEventListener(InlineCompletionUsageTracker.Listener()) // todo remove - InlineCompletionOnboardingListener.createIfOnboarding(editor)?.let(::addEventListener) val logsListener = InlineCompletionLogsListener(editor) addEventListener(logsListener) diff --git a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/InlineCompletionTooltip.kt b/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/InlineCompletionTooltip.kt index 5016c4b3509e..556a21f62fc8 100644 --- a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/InlineCompletionTooltip.kt +++ b/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/InlineCompletionTooltip.kt @@ -15,8 +15,10 @@ import com.intellij.ui.scale.JBUIScale import com.intellij.ui.util.preferredHeight import com.intellij.util.application import com.intellij.util.concurrency.annotations.RequiresEdt +import org.jetbrains.annotations.ApiStatus -internal object InlineCompletionTooltip { +@ApiStatus.Internal +object InlineCompletionTooltip { private val tooltipKey = Key("EDITOR_HAS_INLINE_TOOLTIP") @RequiresEdt diff --git a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/onboarding/InlineCompletionOnboardingComponent.kt b/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/onboarding/InlineCompletionOnboardingComponent.kt index a316fb89678a..e444774a8f0f 100644 --- a/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/onboarding/InlineCompletionOnboardingComponent.kt +++ b/platform/platform-impl/src/com/intellij/codeInsight/inline/completion/tooltip/onboarding/InlineCompletionOnboardingComponent.kt @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.inline.completion.tooltip.onboarding import com.intellij.openapi.components.* diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index 1a8a7e3eddfc..b2c7405a2386 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -1813,8 +1813,6 @@ topic="com.intellij.codeInsight.daemon.DaemonCodeAnalyzer$DaemonListener"/> -