[scopes] IJ-CR-168030 create modules intellij.platform.scopes and intellij.platform.scopes.backend

move SearchScopeData to scopes module
(cherry picked from commit 1e18ec6d51426d8946693e416519e1e80f5b36d0)

GitOrigin-RevId: a05ee31c9989a732d514a8aa3eb3fd7d1d209855
This commit is contained in:
Vera Petrenkova
2025-06-24 17:08:41 +02:00
committed by intellij-monorepo-bot
parent 71018ebb56
commit 88830c6ae4
38 changed files with 235 additions and 70 deletions

2
.idea/modules.xml generated
View File

@@ -916,6 +916,8 @@
<module fileurl="file://$PROJECT_DIR$/platform/runtime/product/tests/intellij.platform.runtime.product.tests.iml" filepath="$PROJECT_DIR$/platform/runtime/product/tests/intellij.platform.runtime.product.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/runtime/repository/intellij.platform.runtime.repository.iml" filepath="$PROJECT_DIR$/platform/runtime/repository/intellij.platform.runtime.repository.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/runtime/repository/tests/intellij.platform.runtime.repository.tests.iml" filepath="$PROJECT_DIR$/platform/runtime/repository/tests/intellij.platform.runtime.repository.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/scopes/intellij.platform.scopes.iml" filepath="$PROJECT_DIR$/platform/scopes/intellij.platform.scopes.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/scopes/backend/intellij.platform.scopes.backend.iml" filepath="$PROJECT_DIR$/platform/scopes/backend/intellij.platform.scopes.backend.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/script-debugger/backend/intellij.platform.scriptDebugger.backend.iml" filepath="$PROJECT_DIR$/platform/script-debugger/backend/intellij.platform.scriptDebugger.backend.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/script-debugger/protocol/protocol-reader-runtime/intellij.platform.scriptDebugger.protocolReaderRuntime.iml" filepath="$PROJECT_DIR$/platform/script-debugger/protocol/protocol-reader-runtime/intellij.platform.scriptDebugger.protocolReaderRuntime.iml" />
<module fileurl="file://$PROJECT_DIR$/platform/script-debugger/debugger-ui/intellij.platform.scriptDebugger.ui.iml" filepath="$PROJECT_DIR$/platform/script-debugger/debugger-ui/intellij.platform.scriptDebugger.ui.iml" />

View File

@@ -16,7 +16,6 @@ jvm_library(
"//platform/testFramework",
"//platform/util/coroutines",
"//platform/platform-impl/eel:ide-impl-wsl",
"//platform/execution",
]
)
### auto-generated section `build intellij.platform.ijent.community.testFramework` end

View File

@@ -22,6 +22,7 @@ java_library(
"//spellchecker/xml",
"//platform/find/backend",
"//platform/managed-cache/managed.cache.backend",
"//platform/scopes/backend",
]
)
### auto-generated section `build intellij.platform.backend.main` end

View File

@@ -22,5 +22,6 @@
<orderEntry type="module" module-name="intellij.spellchecker.xml" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.find.backend" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.managed.cache.backend" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.scopes.backend" scope="RUNTIME" />
</component>
</module>

View File

@@ -13,6 +13,9 @@
<module name="intellij.platform.project.backend"/>
<module name="intellij.platform.progress.backend"/>
<module name="intellij.platform.scopes"/>
<module name="intellij.platform.scopes.backend"/>
<!-- todo navbar is not essential-->
<module name="intellij.platform.navbar"/>
<module name="intellij.platform.navbar.backend"/>

View File

@@ -0,0 +1,28 @@
### auto-generated section `build intellij.platform.scopes` start
load("@rules_jvm//:jvm.bzl", "jvm_library", "jvm_resources")
jvm_resources(
name = "scopes_resources",
files = glob(["resources/**/*"]),
strip_prefix = "resources"
)
jvm_library(
name = "scopes",
module_name = "intellij.platform.scopes",
visibility = ["//visibility:public"],
srcs = glob(["src/**/*.kt", "src/**/*.java"], allow_empty = True),
deps = [
"@lib//:kotlin-stdlib",
"//platform/util",
"//platform/core-api:core",
"//platform/core-ui",
"//platform/ide-core",
"//platform/platform-impl/rpc",
"@lib//:kotlinx-serialization-core",
"@lib//:kotlinx-serialization-json",
"//platform/lang-impl",
],
runtime_deps = [":scopes_resources"]
)
### auto-generated section `build intellij.platform.scopes` end

View File

@@ -0,0 +1,8 @@
c:com.intellij.ide.util.scopeChooser.ScopeDescriptor
- com.intellij.openapi.util.ColoredItem
- <init>(com.intellij.psi.search.SearchScope):V
- getColor():java.awt.Color
- getDisplayName():java.lang.String
- getIcon():javax.swing.Icon
- getScope():com.intellij.psi.search.SearchScope
- scopeEquals(com.intellij.psi.search.SearchScope):Z

View File

@@ -0,0 +1,21 @@
### auto-generated section `build intellij.platform.scopes.backend` start
load("@rules_jvm//:jvm.bzl", "jvm_library", "jvm_resources")
jvm_resources(
name = "backend_resources",
files = glob(["resources/**/*"]),
strip_prefix = "resources"
)
jvm_library(
name = "backend",
module_name = "intellij.platform.scopes.backend",
visibility = ["//visibility:public"],
srcs = glob(["src/**/*.kt", "src/**/*.java"], allow_empty = True),
deps = ["@lib//:kotlin-stdlib"],
runtime_deps = [
":backend_resources",
"//platform/backend",
]
)
### auto-generated section `build intellij.platform.scopes.backend` end

View File

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="5" platform="JVM 17" allPlatforms="JVM [17]" useProjectSettings="false">
<compilerSettings>
<option name="additionalArguments" value="-Xjvm-default=all" />
</compilerSettings>
<compilerArguments>
<stringArguments>
<stringArg name="jvmTarget" arg="17" />
<stringArg name="apiVersion" arg="2.2" />
<stringArg name="languageVersion" arg="2.2" />
</stringArguments>
<arrayArguments>
<arrayArg name="pluginClasspaths">
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
</arrayArg>
<arrayArg name="pluginOptions" />
</arrayArguments>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="com.intellij.platform.scopes.backend" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.platform.backend" scope="RUNTIME" />
</component>
</module>

View File

@@ -0,0 +1,6 @@
<idea-plugin>
<dependencies>
<module name="intellij.platform.backend"/>
<module name="intellij.platform.scopes"/>
</dependencies>
</idea-plugin>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="kotlin-language" name="Kotlin">
<configuration version="5" platform="JVM 17" allPlatforms="JVM [17]" useProjectSettings="false">
<compilerSettings>
<option name="additionalArguments" value="-Xjvm-default=all" />
</compilerSettings>
<compilerArguments>
<stringArguments>
<stringArg name="jvmTarget" arg="17" />
<stringArg name="apiVersion" arg="2.2" />
<stringArg name="languageVersion" arg="2.2" />
</stringArguments>
<arrayArguments>
<arrayArg name="pluginClasspaths">
<args>$KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar</args>
</arrayArg>
<arrayArg name="pluginOptions" />
</arrayArguments>
</compilerArguments>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.platform.util" />
<orderEntry type="module" module-name="intellij.platform.core" />
<orderEntry type="module" module-name="intellij.platform.core.ui" />
<orderEntry type="module" module-name="intellij.platform.ide.core" />
<orderEntry type="module" module-name="intellij.platform.ide.rpc" />
<orderEntry type="library" name="kotlinx-serialization-core" level="project" />
<orderEntry type="library" name="kotlinx-serialization-json" level="project" />
<orderEntry type="module" module-name="intellij.platform.lang.impl" />
</component>
</module>

View File

@@ -0,0 +1,2 @@
<idea-plugin>
</idea-plugin>

View File

@@ -0,0 +1,34 @@
// 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.platform.scopes
import com.intellij.ide.ui.colors.ColorId
import com.intellij.ide.ui.colors.rpcId
import com.intellij.ide.ui.icons.IconId
import com.intellij.ide.ui.icons.rpcId
import com.intellij.ide.util.scopeChooser.ScopeDescriptor
import com.intellij.ide.util.scopeChooser.ScopeSeparator
import kotlinx.serialization.Serializable
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.Nls
@ApiStatus.Internal
@Serializable
class SearchScopeData(val scopeId: String, val name: @Nls String, val iconId: IconId?, val colorId: ColorId?, val isSeparator: Boolean) {
companion object {
fun from(descriptor: ScopeDescriptor, scopeId: String): SearchScopeData? {
val name = descriptor.displayName ?: return null
return SearchScopeData(scopeId,
name,
descriptor.icon?.rpcId(),
descriptor.color?.rpcId(),
descriptor is ScopeSeparator)
}
}
}
@ApiStatus.Internal
@Serializable
class SearchScopesInfo(val scopes: List<SearchScopeData>,
val selectedScopeId: String?,
val projectScopeId: String?,
val everywhereScopeId: String?)

View File

@@ -31,6 +31,7 @@ jvm_library(
"//platform/usageView-impl",
"//platform/refactoring",
"//platform/indexing-api:indexing",
"//platform/scopes",
],
runtime_deps = [
":backend_resources",

View File

@@ -53,5 +53,6 @@
<orderEntry type="module" module-name="intellij.platform.usageView.impl" />
<orderEntry type="module" module-name="intellij.platform.refactoring" />
<orderEntry type="module" module-name="intellij.platform.indexing" />
<orderEntry type="module" module-name="intellij.platform.scopes" />
</component>
</module>

View File

@@ -11,6 +11,7 @@ import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.platform.project.ProjectId
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.equalityProviders.SeEqualityChecker
import com.intellij.platform.searchEverywhere.providers.SeLog
@@ -143,7 +144,7 @@ class SeBackendService(val project: Project, private val coroutineScope: Corouti
dataContextId: DataContextId,
providerIds: List<SeProviderId>,
isAllTab: Boolean,
): Map<SeProviderId, SeSearchScopesInfo> {
): Map<SeProviderId, SearchScopesInfo> {
return providerIds.mapNotNull { providerId ->
val provider = getProvidersHolder(sessionRef, dataContextId)?.get(providerId, isAllTab)
provider?.getSearchScopesInfo()?.let {

View File

@@ -4,6 +4,7 @@ package com.intellij.platform.searchEverywhere.backend.impl
import com.intellij.ide.rpc.DataContextId
import com.intellij.platform.project.ProjectId
import com.intellij.platform.project.findProjectOrNull
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.impl.SeRemoteApi
import com.intellij.platform.searchEverywhere.providers.target.SeTypeVisibilityStatePresentation
@@ -84,7 +85,7 @@ class SeRemoteApiImpl: SeRemoteApi {
dataContextId: DataContextId,
providerIds: List<SeProviderId>,
isAllTab: Boolean,
): Map<SeProviderId, SeSearchScopesInfo> {
): Map<SeProviderId, SearchScopesInfo> {
val project = projectId.findProjectOrNull() ?: return emptyMap()
return SeBackendService.getInstance(project).getSearchScopesInfoForProviders(sessionRef, dataContextId, providerIds, isAllTab)
}

View File

@@ -4,13 +4,13 @@ package com.intellij.platform.searchEverywhere.backend.providers
import com.intellij.ide.actions.searcheverywhere.ScopeChooserAction
import com.intellij.ide.util.scopeChooser.ScopeDescriptor
import com.intellij.openapi.application.readAction
import com.intellij.platform.searchEverywhere.SeSearchScopeData
import com.intellij.platform.searchEverywhere.SeSearchScopesInfo
import com.intellij.platform.scopes.SearchScopeData
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.providers.SeAsyncWeightedContributorWrapper
import com.intellij.platform.searchEverywhere.utils.SuspendLazyProperty
import com.intellij.platform.searchEverywhere.utils.suspendLazy
import org.jetbrains.annotations.ApiStatus
import java.util.UUID
import java.util.*
import kotlin.concurrent.atomics.AtomicReference
import kotlin.concurrent.atomics.ExperimentalAtomicApi
@@ -18,12 +18,12 @@ import kotlin.concurrent.atomics.ExperimentalAtomicApi
@ApiStatus.Internal
class ScopeChooserActionProviderDelegate(private val contributorWrapper: SeAsyncWeightedContributorWrapper<Any>) {
val searchScopesInfo: SuspendLazyProperty<SeSearchScopesInfo?> = suspendLazy { getSearchScopesInfo() }
val searchScopesInfo: SuspendLazyProperty<SearchScopesInfo?> = suspendLazy { getSearchScopesInfo() }
@Volatile
private var scopeIdToScope: AtomicReference<Map<String, ScopeDescriptor>> = AtomicReference(emptyMap())
suspend fun getSearchScopesInfo(): SeSearchScopesInfo? {
suspend fun getSearchScopesInfo(): SearchScopesInfo? {
val scopeChooserAction: ScopeChooserAction = contributorWrapper.contributor.getActions({ }).filterIsInstance<ScopeChooserAction>().firstOrNull()
?: return null
@@ -35,7 +35,7 @@ class ScopeChooserActionProviderDelegate(private val contributorWrapper: SeAsync
scopeChooserAction.scopesWithSeparators
}.mapNotNull { scope ->
val key = UUID.randomUUID().toString()
val data = SeSearchScopeData.from(scope, key)
val data = SearchScopeData.from(scope, key)
if (data != null) all[key] = scope
data
}
@@ -62,10 +62,10 @@ class ScopeChooserActionProviderDelegate(private val contributorWrapper: SeAsync
}?.scopeId
}
return SeSearchScopesInfo(scopeDataList,
selectedScopeId,
projectScopeId,
everywhereScopeId)
return SearchScopesInfo(scopeDataList,
selectedScopeId,
projectScopeId,
everywhereScopeId)
}
fun applyScope(scopeId: String?) {

View File

@@ -3,6 +3,7 @@ package com.intellij.platform.searchEverywhere.backend.providers.classes
import com.intellij.ide.util.gotoByName.LanguageRef
import com.intellij.openapi.util.Disposer
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.backend.providers.target.SeTargetsProviderDelegate
import com.intellij.platform.searchEverywhere.providers.SeAsyncWeightedContributorWrapper
@@ -36,7 +37,7 @@ class SeClassesProvider(private val contributorWrapper: SeAsyncWeightedContribut
Disposer.dispose(contributorWrapper)
}
override suspend fun getSearchScopesInfo(): SeSearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getSearchScopesInfo(): SearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getTypeVisibilityStates(index: Int): List<SeTypeVisibilityStatePresentation> =
targetsProviderDelegate.getTypeVisibilityStates<LanguageRef>(index)

View File

@@ -3,6 +3,7 @@ package com.intellij.platform.searchEverywhere.backend.providers.files
import com.intellij.ide.util.gotoByName.FileTypeRef
import com.intellij.openapi.util.Disposer
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.backend.providers.target.SeTargetsProviderDelegate
import com.intellij.platform.searchEverywhere.providers.SeAsyncWeightedContributorWrapper
@@ -36,7 +37,7 @@ class SeFilesProvider(private val contributorWrapper: SeAsyncWeightedContributor
Disposer.dispose(contributorWrapper)
}
override suspend fun getSearchScopesInfo(): SeSearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getSearchScopesInfo(): SearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getTypeVisibilityStates(index: Int): List<SeTypeVisibilityStatePresentation> =
targetsProviderDelegate.getTypeVisibilityStates<FileTypeRef>(index)

View File

@@ -3,6 +3,7 @@ package com.intellij.platform.searchEverywhere.backend.providers.recentFiles
import com.intellij.ide.util.gotoByName.FileTypeRef
import com.intellij.openapi.util.Disposer
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.backend.providers.target.SeTargetsProviderDelegate
import com.intellij.platform.searchEverywhere.providers.SeAsyncWeightedContributorWrapper
@@ -36,7 +37,7 @@ class SeRecentFilesProvider(private val contributorWrapper: SeAsyncWeightedContr
Disposer.dispose(contributorWrapper)
}
override suspend fun getSearchScopesInfo(): SeSearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getSearchScopesInfo(): SearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getTypeVisibilityStates(index: Int): List<SeTypeVisibilityStatePresentation> =
targetsProviderDelegate.getTypeVisibilityStates<FileTypeRef>(index)

View File

@@ -3,6 +3,7 @@ package com.intellij.platform.searchEverywhere.backend.providers.symbols
import com.intellij.ide.util.gotoByName.LanguageRef
import com.intellij.openapi.util.Disposer
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.backend.providers.target.SeTargetsProviderDelegate
import com.intellij.platform.searchEverywhere.providers.SeAsyncWeightedContributorWrapper
@@ -36,7 +37,7 @@ class SeSymbolsProvider(private val contributorWrapper: SeAsyncWeightedContribut
Disposer.dispose(contributorWrapper)
}
override suspend fun getSearchScopesInfo(): SeSearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getSearchScopesInfo(): SearchScopesInfo? = targetsProviderDelegate.getSearchScopesInfo()
override suspend fun getTypeVisibilityStates(index: Int): List<SeTypeVisibilityStatePresentation> =
targetsProviderDelegate.getTypeVisibilityStates<LanguageRef>(index)

View File

@@ -10,6 +10,7 @@ import com.intellij.ide.util.PsiElementListCellRenderer.ItemMatchers
import com.intellij.openapi.application.EDT
import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.progress.coroutineToIndicator
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.backend.providers.ScopeChooserActionProviderDelegate
import com.intellij.platform.searchEverywhere.providers.*
@@ -101,7 +102,7 @@ class SeTargetsProviderDelegate(private val contributorWrapper: SeAsyncWeightedC
scopeProviderDelegate.applyScope(scopeId)
}
suspend fun getSearchScopesInfo(): SeSearchScopesInfo? {
suspend fun getSearchScopesInfo(): SearchScopesInfo? {
return scopeProviderDelegate.searchScopesInfo.getValue()
}

View File

@@ -12,13 +12,10 @@ import com.intellij.openapi.progress.ProgressManager
import com.intellij.openapi.progress.coroutineToIndicator
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.backend.providers.ScopeChooserActionProviderDelegate
import com.intellij.platform.searchEverywhere.providers.AsyncProcessor
import com.intellij.platform.searchEverywhere.providers.SeAsyncWeightedContributorWrapper
import com.intellij.platform.searchEverywhere.providers.SeEverywhereFilter
import com.intellij.platform.searchEverywhere.providers.SeTextFilter
import com.intellij.platform.searchEverywhere.providers.getExtendedDescription
import com.intellij.platform.searchEverywhere.providers.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.jetbrains.annotations.ApiStatus
@@ -97,7 +94,7 @@ class SeTextItemsProvider(project: Project, private val contributorWrapper: SeAs
scopeProviderDelegate.applyScope(scopeId)
}
override suspend fun getSearchScopesInfo(): SeSearchScopesInfo? {
override suspend fun getSearchScopesInfo(): SearchScopesInfo? {
return scopeProviderDelegate.searchScopesInfo.getValue()
}
}

View File

@@ -33,6 +33,7 @@ jvm_library(
"//platform/lang-impl",
"//platform/usageView",
"//platform/refactoring",
"//platform/scopes",
],
exports = ["//platform/searchEverywhere/shared:searchEverywhere"],
runtime_deps = [":frontend_resources"]

View File

@@ -54,5 +54,6 @@
<orderEntry type="module" module-name="intellij.platform.lang.impl" />
<orderEntry type="module" module-name="intellij.platform.usageView" />
<orderEntry type="module" module-name="intellij.platform.refactoring" />
<orderEntry type="module" module-name="intellij.platform.scopes" />
</component>
</module>

View File

@@ -3,6 +3,7 @@ package com.intellij.platform.searchEverywhere.frontend
import com.intellij.ide.rpc.DataContextId
import com.intellij.platform.project.ProjectId
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.impl.SeRemoteApi
import com.intellij.platform.searchEverywhere.providers.SeLog
@@ -68,7 +69,7 @@ class SeFrontendItemDataProvidersFacade(private val projectId: ProjectId,
return SeRemoteApi.getInstance().itemSelected(projectId, sessionRef, itemData, modifiers, searchText, isAllTab = isAllTab)
}
suspend fun getSearchScopesInfos(): Map<SeProviderId, SeSearchScopesInfo> =
suspend fun getSearchScopesInfos(): Map<SeProviderId, SearchScopesInfo> =
SeRemoteApi.getInstance().getSearchScopesInfoForProviders(
projectId, providerIds = providerIds, sessionRef = sessionRef, dataContextId = dataContextId, isAllTab = isAllTab
)

View File

@@ -8,6 +8,7 @@ import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.readAction
import com.intellij.openapi.project.Project
import com.intellij.platform.project.projectId
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.equalityProviders.SeEqualityChecker
import com.intellij.platform.searchEverywhere.frontend.SeFrontendItemDataProvidersFacade
@@ -76,7 +77,7 @@ class SeTabDelegate(
}
}
suspend fun getSearchScopesInfos(): List<SeSearchScopesInfo> {
suspend fun getSearchScopesInfos(): List<SearchScopesInfo> {
return providers.getValue().getSearchScopesInfos()
}
@@ -129,7 +130,7 @@ class SeTabDelegate(
fun getProvidersIdToName(): Map<SeProviderId, @Nls String> = localProviders.mapValues { it.value.displayName } +
(frontendProvidersFacade?.idsWithDisplayNames ?: emptyMap())
suspend fun getSearchScopesInfos(): List<SeSearchScopesInfo> {
suspend fun getSearchScopesInfos(): List<SearchScopesInfo> {
return localProviders.values.mapNotNull { it.getSearchScopesInfo() } +
(frontendProvidersFacade?.getSearchScopesInfos()?.values ?: emptyList())
}

View File

@@ -9,7 +9,7 @@ import com.intellij.ide.util.scopeChooser.ScopeSeparator
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.module.Module
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.platform.searchEverywhere.SeSearchScopesInfo
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.frontend.AutoToggleAction
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.util.Processor
@@ -19,7 +19,7 @@ import java.awt.Color
import javax.swing.Icon
@ApiStatus.Internal
class SeScopeChooserActionProvider(val scopesInfo: SeSearchScopesInfo, private val onSelectedScopeChanged: (String?) -> Unit) {
class SeScopeChooserActionProvider(val scopesInfo: SearchScopesInfo, private val onSelectedScopeChanged: (String?) -> Unit) {
private val descriptors: Map<String, ScopeDescriptor> = scopesInfo.scopes.associate {
val descriptor =
if (it.isSeparator) ScopeSeparator(it.name)

View File

@@ -5,7 +5,7 @@ import com.intellij.ide.actions.searcheverywhere.PersistentSearchEverywhereContr
import com.intellij.ide.actions.searcheverywhere.SearchEverywhereFiltersAction
import com.intellij.ide.ui.icons.icon
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.platform.searchEverywhere.SeSearchScopesInfo
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.frontend.tabs.utils.SeFilterEditorBase
import com.intellij.platform.searchEverywhere.frontend.tabs.utils.SeTypeVisibilityStateHolder
import com.intellij.platform.searchEverywhere.providers.target.SeTargetsFilter
@@ -13,7 +13,7 @@ import com.intellij.platform.searchEverywhere.providers.target.SeTypeVisibilityS
import org.jetbrains.annotations.ApiStatus.Internal
@Internal
class SeTargetsFilterEditor(private val scopesInfo: SeSearchScopesInfo?,
class SeTargetsFilterEditor(private val scopesInfo: SearchScopesInfo?,
typeVisibilityStates: List<SeTypeVisibilityStatePresentation>?) : SeFilterEditorBase<SeTargetsFilter>(
SeTargetsFilter(scopesInfo?.selectedScopeId, hiddenTypes(typeVisibilityStates))
) {

View File

@@ -6,7 +6,7 @@ import com.intellij.find.FindSettings
import com.intellij.find.impl.JComboboxAction
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.project.Project
import com.intellij.platform.searchEverywhere.SeSearchScopesInfo
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.frontend.tabs.target.SeScopeChooserActionProvider
import com.intellij.platform.searchEverywhere.frontend.tabs.utils.SeFilterEditorBase
import com.intellij.platform.searchEverywhere.providers.SeTextFilter
@@ -15,7 +15,7 @@ import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
class SeTextFilterEditor(
private val project: Project?,
private val scopesInfo: SeSearchScopesInfo?,
private val scopesInfo: SearchScopesInfo?,
) : SeFilterEditorBase<SeTextFilter>(
SeTextFilter(scopesInfo?.selectedScopeId, null)
) {

View File

@@ -30,6 +30,7 @@ jvm_library(
"//platform/usageView",
"//platform/execution-impl",
"//platform/statistics",
"//platform/scopes",
],
exports = [
"//platform/lang-impl",

View File

@@ -51,5 +51,6 @@
<orderEntry type="module" module-name="intellij.platform.usageView" />
<orderEntry type="module" module-name="intellij.platform.execution.impl" />
<orderEntry type="module" module-name="intellij.platform.statistics" exported="" />
<orderEntry type="module" module-name="intellij.platform.scopes" />
</component>
</module>

View File

@@ -1,34 +0,0 @@
// 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.platform.searchEverywhere
import com.intellij.ide.ui.colors.ColorId
import com.intellij.ide.ui.colors.rpcId
import com.intellij.ide.ui.icons.IconId
import com.intellij.ide.ui.icons.rpcId
import com.intellij.ide.util.scopeChooser.ScopeDescriptor
import com.intellij.ide.util.scopeChooser.ScopeSeparator
import kotlinx.serialization.Serializable
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.Nls
@ApiStatus.Internal
@Serializable
class SeSearchScopeData(val scopeId: String, val name: @Nls String, val iconId: IconId?, val colorId: ColorId?, val isSeparator: Boolean) {
companion object {
fun from(descriptor: ScopeDescriptor, scopeId: String): SeSearchScopeData? {
val name = descriptor.displayName ?: return null
return SeSearchScopeData(scopeId,
name,
descriptor.icon?.rpcId(),
descriptor.color?.rpcId(),
descriptor is ScopeSeparator)
}
}
}
@ApiStatus.Internal
@Serializable
class SeSearchScopesInfo(val scopes: List<SeSearchScopeData>,
val selectedScopeId: String?,
val projectScopeId: String?,
val everywhereScopeId: String?)

View File

@@ -1,9 +1,10 @@
// 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.platform.searchEverywhere
import com.intellij.platform.scopes.SearchScopesInfo
import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
interface SeSearchScopesProvider {
suspend fun getSearchScopesInfo(): SeSearchScopesInfo?
suspend fun getSearchScopesInfo(): SearchScopesInfo?
}

View File

@@ -4,6 +4,7 @@ package com.intellij.platform.searchEverywhere.impl
import com.intellij.ide.rpc.DataContextId
import com.intellij.platform.project.ProjectId
import com.intellij.platform.rpc.RemoteApiProviderService
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.providers.target.SeTypeVisibilityStatePresentation
import fleet.kernel.DurableRef
@@ -82,7 +83,7 @@ interface SeRemoteApi : RemoteApi<Unit> {
dataContextId: DataContextId,
providerIds: List<SeProviderId>,
isAllTab: Boolean,
): Map<SeProviderId, SeSearchScopesInfo>
): Map<SeProviderId, SearchScopesInfo>
suspend fun getTypeVisibilityStatesForProviders(
index: Int,

View File

@@ -4,6 +4,7 @@ package com.intellij.platform.searchEverywhere.providers
import com.intellij.ide.actions.searcheverywhere.statistics.SearchEverywhereUsageTriggerCollector
import com.intellij.openapi.Disposable
import com.intellij.openapi.util.Disposer
import com.intellij.platform.scopes.SearchScopesInfo
import com.intellij.platform.searchEverywhere.*
import com.intellij.platform.searchEverywhere.providers.target.SeTypeVisibilityStatePresentation
import fleet.kernel.DurableRef
@@ -75,7 +76,7 @@ class SeLocalItemDataProvider(
return provider.itemSelected(item, modifiers, searchText)
}
suspend fun getSearchScopesInfo(): SeSearchScopesInfo? {
suspend fun getSearchScopesInfo(): SearchScopesInfo? {
return (provider as? SeSearchScopesProvider)?.getSearchScopesInfo()
}