[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
This commit is contained in:
Kirill.Karnaukhov
2024-10-24 12:11:01 +02:00
committed by intellij-monorepo-bot
parent ffaf9c1a5c
commit c6b33c9ec5
8 changed files with 19 additions and 16 deletions

View File

@@ -11,5 +11,6 @@
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.platform.ide.impl" />
<orderEntry type="module" module-name="intellij.platform.inline.completion" />
<orderEntry type="module" module-name="intellij.platform.lang" />
</component>
</module>

View File

@@ -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)
}

View File

@@ -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))
}
}

View File

@@ -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 {

View File

@@ -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)

View File

@@ -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<Unit>("EDITOR_HAS_INLINE_TOOLTIP")
@RequiresEdt

View File

@@ -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.*

View File

@@ -1813,8 +1813,6 @@
topic="com.intellij.codeInsight.daemon.DaemonCodeAnalyzer$DaemonListener"/>
<listener class="com.intellij.codeInsight.inline.completion.InlineCompletionLookupManagerListener"
topic="com.intellij.codeInsight.lookup.LookupManagerListener"/>
<listener class="com.intellij.codeInsight.inline.completion.InlineCompletionNoSuggestionListenerInstaller"
topic="com.intellij.codeInsight.inline.completion.InlineCompletionInstallListener"/>
<listener class="com.intellij.codeInsight.inline.completion.TabEnterUsageDetector"
topic="com.intellij.codeInsight.lookup.LookupManagerListener"/>
<listener class="com.intellij.lang.documentation.ide.impl.DocumentationAutoPopupListener"