From 9076a2e253c8bd5c0ddabc997487cd8844dc8fc4 Mon Sep 17 00:00:00 2001 From: "Kirill.Karnaukhov" Date: Thu, 24 Oct 2024 18:11:56 +0200 Subject: [PATCH] [inline-completion] IJPL-161906: make `FrontendInlineCompletionHandler` shared (cherry picked from commit a14fc54fac3b56d7370fe64ea9f63a12c38f081b) IJ-MR-147762 GitOrigin-RevId: e0140ab89f1fd9d5f75938572f53c57999a9c505 --- .idea/modules.xml | 1 - .../inline-completion/frontend/api-dump.txt | 0 ...ij.platform.inline.completion.frontend.iml | 16 --------------- ...ij.platform.inline.completion.frontend.xml | 11 ---------- ...ntendInlineCompletionHandlerInitializer.kt | 20 ------------------- .../intellij.platform.inline.completion.xml | 8 ++++++-- .../src/InlineCompletionHandlerImpl.kt} | 17 ++++++++++------ .../InlineCompletionHandlerInitializerImpl.kt | 12 +++++++++++ .../InlineCompletionNoSuggestionsListener.kt | 5 +---- .../InlineCompletionOnboardingListener.kt | 2 +- .../intellij.platform.frontend.main.iml | 1 - .../src/META-INF/essential-modules.xml | 1 - 12 files changed, 31 insertions(+), 63 deletions(-) delete mode 100644 platform/inline-completion/frontend/api-dump.txt delete mode 100644 platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml delete mode 100644 platform/inline-completion/frontend/resources/intellij.platform.inline.completion.frontend.xml delete mode 100644 platform/inline-completion/frontend/src/FrontendInlineCompletionHandlerInitializer.kt rename platform/inline-completion/{frontend/src/FrontendInlineCompletionHandler.kt => shared/src/InlineCompletionHandlerImpl.kt} (78%) create mode 100644 platform/inline-completion/shared/src/InlineCompletionHandlerInitializerImpl.kt rename platform/inline-completion/{frontend => shared}/src/InlineCompletionNoSuggestionsListener.kt (77%) rename platform/inline-completion/{frontend/src/tooltip => shared/src}/onboarding/InlineCompletionOnboardingListener.kt (95%) diff --git a/.idea/modules.xml b/.idea/modules.xml index 8ef4fbfb9b1a..c652b82e289e 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -699,7 +699,6 @@ - diff --git a/platform/inline-completion/frontend/api-dump.txt b/platform/inline-completion/frontend/api-dump.txt deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml b/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml deleted file mode 100644 index 1969f56b236b..000000000000 --- a/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/platform/inline-completion/frontend/resources/intellij.platform.inline.completion.frontend.xml b/platform/inline-completion/frontend/resources/intellij.platform.inline.completion.frontend.xml deleted file mode 100644 index 3d3bc5be5c56..000000000000 --- a/platform/inline-completion/frontend/resources/intellij.platform.inline.completion.frontend.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/platform/inline-completion/frontend/src/FrontendInlineCompletionHandlerInitializer.kt b/platform/inline-completion/frontend/src/FrontendInlineCompletionHandlerInitializer.kt deleted file mode 100644 index 64704446afb1..000000000000 --- a/platform/inline-completion/frontend/src/FrontendInlineCompletionHandlerInitializer.kt +++ /dev/null @@ -1,20 +0,0 @@ -// 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 - -import com.intellij.codeInsight.inline.completion.InlineCompletionHandler -import com.intellij.codeInsight.inline.completion.InlineCompletionHandlerInitializer -import com.intellij.codeInsight.inline.completion.InlineCompletionRemDevUtils -import com.intellij.codeWithMe.ClientId -import com.intellij.codeWithMe.ClientId.Companion.isLocal -import com.intellij.openapi.Disposable -import com.intellij.openapi.editor.Editor -import kotlinx.coroutines.CoroutineScope - -internal class FrontendInlineCompletionHandlerInitializer : InlineCompletionHandlerInitializer { - override fun initialize(editor: Editor, scope: CoroutineScope, disposable: Disposable): InlineCompletionHandler? { - if (!ClientId.currentOrNull.isLocal && InlineCompletionRemDevUtils.isRhizomeUsed()) { - return null - } - return FrontendInlineCompletionHandler(scope, editor, disposable) - } -} diff --git a/platform/inline-completion/shared/resources/intellij.platform.inline.completion.xml b/platform/inline-completion/shared/resources/intellij.platform.inline.completion.xml index 642a1b0113a1..39e1e69a31ee 100644 --- a/platform/inline-completion/shared/resources/intellij.platform.inline.completion.xml +++ b/platform/inline-completion/shared/resources/intellij.platform.inline.completion.xml @@ -1,5 +1,10 @@ + + + + dynamic="true"/> \ No newline at end of file diff --git a/platform/inline-completion/frontend/src/FrontendInlineCompletionHandler.kt b/platform/inline-completion/shared/src/InlineCompletionHandlerImpl.kt similarity index 78% rename from platform/inline-completion/frontend/src/FrontendInlineCompletionHandler.kt rename to platform/inline-completion/shared/src/InlineCompletionHandlerImpl.kt index 17a85c9fdfd1..385442f6b168 100644 --- a/platform/inline-completion/frontend/src/FrontendInlineCompletionHandler.kt +++ b/platform/inline-completion/shared/src/InlineCompletionHandlerImpl.kt @@ -1,18 +1,19 @@ // 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 +package com.intellij.codeInsight.inline.completion -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.onboarding.InlineCompletionOnboardingListener import com.intellij.codeInsight.inline.completion.session.InlineCompletionContext +import com.intellij.codeInsight.inline.completion.session.InlineCompletionInvalidationListener import com.intellij.codeInsight.inline.completion.session.InlineCompletionSession import com.intellij.codeInsight.inline.completion.session.InlineCompletionSessionManager import com.intellij.codeInsight.inline.completion.suggestion.InlineCompletionSuggestionUpdateManager import com.intellij.openapi.Disposable import com.intellij.openapi.editor.Editor +import com.intellij.util.EventDispatcher import kotlinx.coroutines.CoroutineScope -internal class FrontendInlineCompletionHandler( +internal class InlineCompletionHandlerImpl( scope: CoroutineScope, editor: Editor, parentDisposable: Disposable @@ -23,6 +24,10 @@ internal class FrontendInlineCompletionHandler( InlineCompletionOnboardingListener.createIfOnboarding(editor)?.let(::addEventListener) } + // Fighting with 'AccessError' of protected method + private val myInvalidationListeners: EventDispatcher + get() = invalidationListeners + override fun startSessionOrNull(request: InlineCompletionRequest, provider: InlineCompletionProvider): InlineCompletionSession? { return sessionManager.createSession(provider, request, parentDisposable, specificId = null) } @@ -41,10 +46,10 @@ internal class FrontendInlineCompletionHandler( // TODO share with backend when (val reason = invalidatedResult?.reason) { is UpdateSessionResult.Invalidated.Reason.Event -> { - invalidationListeners.multicaster.onInvalidatedByEvent(reason.event) + myInvalidationListeners.multicaster.onInvalidatedByEvent(reason.event) } UpdateSessionResult.Invalidated.Reason.UnclassifiedDocumentChange -> { - invalidationListeners.multicaster.onInvalidatedByUnclassifiedDocumentChange() + myInvalidationListeners.multicaster.onInvalidatedByUnclassifiedDocumentChange() } null -> Unit } diff --git a/platform/inline-completion/shared/src/InlineCompletionHandlerInitializerImpl.kt b/platform/inline-completion/shared/src/InlineCompletionHandlerInitializerImpl.kt new file mode 100644 index 000000000000..02a14a5a1892 --- /dev/null +++ b/platform/inline-completion/shared/src/InlineCompletionHandlerInitializerImpl.kt @@ -0,0 +1,12 @@ +// 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 + +import com.intellij.openapi.Disposable +import com.intellij.openapi.editor.Editor +import kotlinx.coroutines.CoroutineScope + +internal class InlineCompletionHandlerInitializerImpl : InlineCompletionHandlerInitializer { + override fun initialize(editor: Editor, scope: CoroutineScope, disposable: Disposable): InlineCompletionHandler { + return InlineCompletionHandlerImpl(scope, editor, disposable) + } +} diff --git a/platform/inline-completion/frontend/src/InlineCompletionNoSuggestionsListener.kt b/platform/inline-completion/shared/src/InlineCompletionNoSuggestionsListener.kt similarity index 77% rename from platform/inline-completion/frontend/src/InlineCompletionNoSuggestionsListener.kt rename to platform/inline-completion/shared/src/InlineCompletionNoSuggestionsListener.kt index a4c192172168..50e78f0abd68 100644 --- a/platform/inline-completion/frontend/src/InlineCompletionNoSuggestionsListener.kt +++ b/platform/inline-completion/shared/src/InlineCompletionNoSuggestionsListener.kt @@ -1,10 +1,7 @@ // 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 +package com.intellij.codeInsight.inline.completion 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 diff --git a/platform/inline-completion/frontend/src/tooltip/onboarding/InlineCompletionOnboardingListener.kt b/platform/inline-completion/shared/src/onboarding/InlineCompletionOnboardingListener.kt similarity index 95% rename from platform/inline-completion/frontend/src/tooltip/onboarding/InlineCompletionOnboardingListener.kt rename to platform/inline-completion/shared/src/onboarding/InlineCompletionOnboardingListener.kt index 2d87392e515f..daa0ec089598 100644 --- a/platform/inline-completion/frontend/src/tooltip/onboarding/InlineCompletionOnboardingListener.kt +++ b/platform/inline-completion/shared/src/onboarding/InlineCompletionOnboardingListener.kt @@ -1,5 +1,5 @@ // 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 +package com.intellij.codeInsight.inline.completion.onboarding import com.intellij.codeInsight.inline.completion.InlineCompletionEventAdapter import com.intellij.codeInsight.inline.completion.InlineCompletionEventType diff --git a/platform/main/intellij.platform.frontend.main/intellij.platform.frontend.main.iml b/platform/main/intellij.platform.frontend.main/intellij.platform.frontend.main.iml index ace4b88d4f66..26b79fefd92c 100644 --- a/platform/main/intellij.platform.frontend.main/intellij.platform.frontend.main.iml +++ b/platform/main/intellij.platform.frontend.main/intellij.platform.frontend.main.iml @@ -8,6 +8,5 @@ - \ No newline at end of file diff --git a/platform/platform-resources/src/META-INF/essential-modules.xml b/platform/platform-resources/src/META-INF/essential-modules.xml index dbaf7ee3071b..718f8917faa1 100644 --- a/platform/platform-resources/src/META-INF/essential-modules.xml +++ b/platform/platform-resources/src/META-INF/essential-modules.xml @@ -24,6 +24,5 @@ - \ No newline at end of file