mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[inline-completion] IJPL-161906: make FrontendInlineCompletionHandler shared
(cherry picked from commit a14fc54fac3b56d7370fe64ea9f63a12c38f081b) IJ-MR-147762 GitOrigin-RevId: e0140ab89f1fd9d5f75938572f53c57999a9c505
This commit is contained in:
committed by
intellij-monorepo-bot
parent
af3d6f0506
commit
9076a2e253
Generated
-1
@@ -699,7 +699,6 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/indexing-impl/intellij.platform.indexing.impl.iml" filepath="$PROJECT_DIR$/platform/indexing-impl/intellij.platform.indexing.impl.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/indexing-tests/intellij.platform.indexing.tests.iml" filepath="$PROJECT_DIR$/platform/indexing-tests/intellij.platform.indexing.tests.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/inline-completion/shared/intellij.platform.inline.completion.iml" filepath="$PROJECT_DIR$/platform/inline-completion/shared/intellij.platform.inline.completion.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml" filepath="$PROJECT_DIR$/platform/inline-completion/frontend/intellij.platform.inline.completion.frontend.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/inspect/intellij.platform.inspect.iml" filepath="$PROJECT_DIR$/platform/inspect/intellij.platform.inspect.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/instanceContainer/intellij.platform.instanceContainer.iml" filepath="$PROJECT_DIR$/platform/instanceContainer/intellij.platform.instanceContainer.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/instanceContainer/intellij.platform.instanceContainer.tests.iml" filepath="$PROJECT_DIR$/platform/instanceContainer/intellij.platform.instanceContainer.tests.iml" />
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/" isTestSource="false" packagePrefix="com.intellij.codeInsight.inline.completion.frontend" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/resources/" type="java-resource" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<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>
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
<idea-plugin package="com.intellij.codeInsight.inline.completion.frontend">
|
||||
|
||||
<dependencies>
|
||||
<module name="intellij.platform.inline.completion"/>
|
||||
</dependencies>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<inline.completion.handlerInitializer
|
||||
implementation="com.intellij.codeInsight.inline.completion.frontend.FrontendInlineCompletionHandlerInitializer"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,10 @@
|
||||
<idea-plugin package="com.intellij.codeInsight.inline.completion">
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij">
|
||||
<inline.completion.handlerInitializer
|
||||
order="last"
|
||||
implementation="com.intellij.codeInsight.inline.completion.InlineCompletionHandlerInitializerImpl"/>
|
||||
|
||||
<registryKey key="inline.completion.rem.dev.use.rhizome"
|
||||
description="Use Rhizome DB for inline completion implementation in RemDev"
|
||||
restartRequired="true"
|
||||
@@ -10,7 +15,6 @@
|
||||
<extensionPoint
|
||||
qualifiedName="com.intellij.inline.completion.shortcutHintListener"
|
||||
interface="com.intellij.codeInsight.inline.completion.shortcut.InlineCompletionShortcutHintListener"
|
||||
dynamic="true"
|
||||
/>
|
||||
dynamic="true"/>
|
||||
</extensionPoints>
|
||||
</idea-plugin>
|
||||
+11
-6
@@ -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<InlineCompletionInvalidationListener>
|
||||
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
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
+1
-4
@@ -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
|
||||
+1
-1
@@ -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
|
||||
@@ -8,6 +8,5 @@
|
||||
<orderEntry type="module" module-name="intellij.platform.main" scope="RUNTIME" />
|
||||
<orderEntry type="module" module-name="intellij.platform.navbar.frontend" scope="RUNTIME" />
|
||||
<orderEntry type="module" module-name="intellij.platform.debugger.impl.frontend" scope="RUNTIME" />
|
||||
<orderEntry type="module" module-name="intellij.platform.inline.completion.frontend" scope="RUNTIME" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -24,6 +24,5 @@
|
||||
<module name="intellij.platform.frontend"/>
|
||||
|
||||
<module name="intellij.platform.inline.completion"/>
|
||||
<module name="intellij.platform.inline.completion.frontend"/>
|
||||
</content>
|
||||
</idea-plugin>
|
||||
Reference in New Issue
Block a user