diff --git a/.idea/modules.xml b/.idea/modules.xml index 5a14c43b72c8..81cc091b2c68 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -916,6 +916,8 @@ + + diff --git a/platform/ijent/testFramework/BUILD.bazel b/platform/ijent/testFramework/BUILD.bazel index 1c0d373257c6..ea6812e97883 100644 --- a/platform/ijent/testFramework/BUILD.bazel +++ b/platform/ijent/testFramework/BUILD.bazel @@ -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 \ No newline at end of file diff --git a/platform/main/intellij.platform.backend.main/BUILD.bazel b/platform/main/intellij.platform.backend.main/BUILD.bazel index 62b3161c77b8..bc55e5698f29 100644 --- a/platform/main/intellij.platform.backend.main/BUILD.bazel +++ b/platform/main/intellij.platform.backend.main/BUILD.bazel @@ -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 \ No newline at end of file diff --git a/platform/main/intellij.platform.backend.main/intellij.platform.backend.main.iml b/platform/main/intellij.platform.backend.main/intellij.platform.backend.main.iml index 91ba86406a2f..9a17cdc450e6 100644 --- a/platform/main/intellij.platform.backend.main/intellij.platform.backend.main.iml +++ b/platform/main/intellij.platform.backend.main/intellij.platform.backend.main.iml @@ -22,5 +22,6 @@ + \ 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 fbc565cbe652..3e50ba0981ea 100644 --- a/platform/platform-resources/src/META-INF/essential-modules.xml +++ b/platform/platform-resources/src/META-INF/essential-modules.xml @@ -13,6 +13,9 @@ + + + diff --git a/platform/scopes/BUILD.bazel b/platform/scopes/BUILD.bazel new file mode 100644 index 000000000000..b8e3b6fed5d3 --- /dev/null +++ b/platform/scopes/BUILD.bazel @@ -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 \ No newline at end of file diff --git a/platform/scopes/api-dump.txt b/platform/scopes/api-dump.txt new file mode 100644 index 000000000000..5a12305a473f --- /dev/null +++ b/platform/scopes/api-dump.txt @@ -0,0 +1,8 @@ +c:com.intellij.ide.util.scopeChooser.ScopeDescriptor +- com.intellij.openapi.util.ColoredItem +- (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 diff --git a/platform/scopes/backend/BUILD.bazel b/platform/scopes/backend/BUILD.bazel new file mode 100644 index 000000000000..861ceff1efb1 --- /dev/null +++ b/platform/scopes/backend/BUILD.bazel @@ -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 \ No newline at end of file diff --git a/platform/scopes/backend/api-dump.txt b/platform/scopes/backend/api-dump.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/platform/scopes/backend/intellij.platform.scopes.backend.iml b/platform/scopes/backend/intellij.platform.scopes.backend.iml new file mode 100644 index 000000000000..745264fcc004 --- /dev/null +++ b/platform/scopes/backend/intellij.platform.scopes.backend.iml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + $KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/scopes/backend/resources/intellij.platform.scopes.backend.xml b/platform/scopes/backend/resources/intellij.platform.scopes.backend.xml new file mode 100644 index 000000000000..c74b673c5b4a --- /dev/null +++ b/platform/scopes/backend/resources/intellij.platform.scopes.backend.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/platform/scopes/intellij.platform.scopes.iml b/platform/scopes/intellij.platform.scopes.iml new file mode 100644 index 000000000000..5573c969f401 --- /dev/null +++ b/platform/scopes/intellij.platform.scopes.iml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + $KOTLIN_BUNDLED$/lib/kotlinx-serialization-compiler-plugin.jar + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/scopes/resources/intellij.platform.scopes.xml b/platform/scopes/resources/intellij.platform.scopes.xml new file mode 100644 index 000000000000..164f46cfcfb2 --- /dev/null +++ b/platform/scopes/resources/intellij.platform.scopes.xml @@ -0,0 +1,2 @@ + + diff --git a/platform/scopes/src/com/intellij/platform/scopes/SearchScopeData.kt b/platform/scopes/src/com/intellij/platform/scopes/SearchScopeData.kt new file mode 100644 index 000000000000..4aad1ba080ce --- /dev/null +++ b/platform/scopes/src/com/intellij/platform/scopes/SearchScopeData.kt @@ -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, + val selectedScopeId: String?, + val projectScopeId: String?, + val everywhereScopeId: String?) diff --git a/platform/searchEverywhere/backend/BUILD.bazel b/platform/searchEverywhere/backend/BUILD.bazel index 8140bcdbe418..5a1a41cb7599 100644 --- a/platform/searchEverywhere/backend/BUILD.bazel +++ b/platform/searchEverywhere/backend/BUILD.bazel @@ -31,6 +31,7 @@ jvm_library( "//platform/usageView-impl", "//platform/refactoring", "//platform/indexing-api:indexing", + "//platform/scopes", ], runtime_deps = [ ":backend_resources", diff --git a/platform/searchEverywhere/backend/intellij.platform.searchEverywhere.backend.iml b/platform/searchEverywhere/backend/intellij.platform.searchEverywhere.backend.iml index 874d5fd90ef3..787cb34b71b7 100644 --- a/platform/searchEverywhere/backend/intellij.platform.searchEverywhere.backend.iml +++ b/platform/searchEverywhere/backend/intellij.platform.searchEverywhere.backend.iml @@ -53,5 +53,6 @@ + \ No newline at end of file diff --git a/platform/searchEverywhere/backend/src/impl/SeBackendService.kt b/platform/searchEverywhere/backend/src/impl/SeBackendService.kt index 033ec0a208a0..db6e51a7c1fc 100644 --- a/platform/searchEverywhere/backend/src/impl/SeBackendService.kt +++ b/platform/searchEverywhere/backend/src/impl/SeBackendService.kt @@ -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, isAllTab: Boolean, - ): Map { + ): Map { return providerIds.mapNotNull { providerId -> val provider = getProvidersHolder(sessionRef, dataContextId)?.get(providerId, isAllTab) provider?.getSearchScopesInfo()?.let { diff --git a/platform/searchEverywhere/backend/src/impl/SeRemoteApiImpl.kt b/platform/searchEverywhere/backend/src/impl/SeRemoteApiImpl.kt index ae258e045556..cd66564d7fb8 100644 --- a/platform/searchEverywhere/backend/src/impl/SeRemoteApiImpl.kt +++ b/platform/searchEverywhere/backend/src/impl/SeRemoteApiImpl.kt @@ -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, isAllTab: Boolean, - ): Map { + ): Map { val project = projectId.findProjectOrNull() ?: return emptyMap() return SeBackendService.getInstance(project).getSearchScopesInfoForProviders(sessionRef, dataContextId, providerIds, isAllTab) } diff --git a/platform/searchEverywhere/backend/src/providers/ScopeChooserActionProvider.kt b/platform/searchEverywhere/backend/src/providers/ScopeChooserActionProvider.kt index 4db57fcbb2b4..c1d69bb461b6 100644 --- a/platform/searchEverywhere/backend/src/providers/ScopeChooserActionProvider.kt +++ b/platform/searchEverywhere/backend/src/providers/ScopeChooserActionProvider.kt @@ -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) { - val searchScopesInfo: SuspendLazyProperty = suspendLazy { getSearchScopesInfo() } + val searchScopesInfo: SuspendLazyProperty = suspendLazy { getSearchScopesInfo() } @Volatile private var scopeIdToScope: AtomicReference> = AtomicReference(emptyMap()) - suspend fun getSearchScopesInfo(): SeSearchScopesInfo? { + suspend fun getSearchScopesInfo(): SearchScopesInfo? { val scopeChooserAction: ScopeChooserAction = contributorWrapper.contributor.getActions({ }).filterIsInstance().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?) { diff --git a/platform/searchEverywhere/backend/src/providers/classes/SeClassesProvider.kt b/platform/searchEverywhere/backend/src/providers/classes/SeClassesProvider.kt index 12ff386d3af8..910aa8fa6234 100644 --- a/platform/searchEverywhere/backend/src/providers/classes/SeClassesProvider.kt +++ b/platform/searchEverywhere/backend/src/providers/classes/SeClassesProvider.kt @@ -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 = targetsProviderDelegate.getTypeVisibilityStates(index) diff --git a/platform/searchEverywhere/backend/src/providers/files/SeFilesProvider.kt b/platform/searchEverywhere/backend/src/providers/files/SeFilesProvider.kt index 0fc3eb4863cc..2b50b11dee51 100644 --- a/platform/searchEverywhere/backend/src/providers/files/SeFilesProvider.kt +++ b/platform/searchEverywhere/backend/src/providers/files/SeFilesProvider.kt @@ -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 = targetsProviderDelegate.getTypeVisibilityStates(index) diff --git a/platform/searchEverywhere/backend/src/providers/recentFiles/SeRecentFilesProvider.kt b/platform/searchEverywhere/backend/src/providers/recentFiles/SeRecentFilesProvider.kt index 6236d207c8f5..7ec05c0081bb 100644 --- a/platform/searchEverywhere/backend/src/providers/recentFiles/SeRecentFilesProvider.kt +++ b/platform/searchEverywhere/backend/src/providers/recentFiles/SeRecentFilesProvider.kt @@ -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 = targetsProviderDelegate.getTypeVisibilityStates(index) diff --git a/platform/searchEverywhere/backend/src/providers/symbols/SeSymbolsProvider.kt b/platform/searchEverywhere/backend/src/providers/symbols/SeSymbolsProvider.kt index 2b1d81a34cc8..8e899fac13bd 100644 --- a/platform/searchEverywhere/backend/src/providers/symbols/SeSymbolsProvider.kt +++ b/platform/searchEverywhere/backend/src/providers/symbols/SeSymbolsProvider.kt @@ -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 = targetsProviderDelegate.getTypeVisibilityStates(index) diff --git a/platform/searchEverywhere/backend/src/providers/target/SeTargetsProviderDelegate.kt b/platform/searchEverywhere/backend/src/providers/target/SeTargetsProviderDelegate.kt index 97c9a6b5b4d8..d2abb8fec358 100644 --- a/platform/searchEverywhere/backend/src/providers/target/SeTargetsProviderDelegate.kt +++ b/platform/searchEverywhere/backend/src/providers/target/SeTargetsProviderDelegate.kt @@ -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() } diff --git a/platform/searchEverywhere/backend/src/providers/text/SeTextItemsProvider.kt b/platform/searchEverywhere/backend/src/providers/text/SeTextItemsProvider.kt index 0c1087213902..d92828e93322 100644 --- a/platform/searchEverywhere/backend/src/providers/text/SeTextItemsProvider.kt +++ b/platform/searchEverywhere/backend/src/providers/text/SeTextItemsProvider.kt @@ -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() } } diff --git a/platform/searchEverywhere/frontend/BUILD.bazel b/platform/searchEverywhere/frontend/BUILD.bazel index 027feb668282..5cb44913d553 100644 --- a/platform/searchEverywhere/frontend/BUILD.bazel +++ b/platform/searchEverywhere/frontend/BUILD.bazel @@ -33,6 +33,7 @@ jvm_library( "//platform/lang-impl", "//platform/usageView", "//platform/refactoring", + "//platform/scopes", ], exports = ["//platform/searchEverywhere/shared:searchEverywhere"], runtime_deps = [":frontend_resources"] diff --git a/platform/searchEverywhere/frontend/intellij.platform.searchEverywhere.frontend.iml b/platform/searchEverywhere/frontend/intellij.platform.searchEverywhere.frontend.iml index 8866668828c1..d2febe9dab48 100644 --- a/platform/searchEverywhere/frontend/intellij.platform.searchEverywhere.frontend.iml +++ b/platform/searchEverywhere/frontend/intellij.platform.searchEverywhere.frontend.iml @@ -54,5 +54,6 @@ + \ No newline at end of file diff --git a/platform/searchEverywhere/frontend/src/SeFrontendItemDataProvidersFacade.kt b/platform/searchEverywhere/frontend/src/SeFrontendItemDataProvidersFacade.kt index ff6ca34a5051..1364d1f7fd0d 100644 --- a/platform/searchEverywhere/frontend/src/SeFrontendItemDataProvidersFacade.kt +++ b/platform/searchEverywhere/frontend/src/SeFrontendItemDataProvidersFacade.kt @@ -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 = + suspend fun getSearchScopesInfos(): Map = SeRemoteApi.getInstance().getSearchScopesInfoForProviders( projectId, providerIds = providerIds, sessionRef = sessionRef, dataContextId = dataContextId, isAllTab = isAllTab ) diff --git a/platform/searchEverywhere/frontend/src/resultsProcessing/SeTabDelegate.kt b/platform/searchEverywhere/frontend/src/resultsProcessing/SeTabDelegate.kt index 717f74514f6b..631538f6dd9e 100644 --- a/platform/searchEverywhere/frontend/src/resultsProcessing/SeTabDelegate.kt +++ b/platform/searchEverywhere/frontend/src/resultsProcessing/SeTabDelegate.kt @@ -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 { + suspend fun getSearchScopesInfos(): List { return providers.getValue().getSearchScopesInfos() } @@ -129,7 +130,7 @@ class SeTabDelegate( fun getProvidersIdToName(): Map = localProviders.mapValues { it.value.displayName } + (frontendProvidersFacade?.idsWithDisplayNames ?: emptyMap()) - suspend fun getSearchScopesInfos(): List { + suspend fun getSearchScopesInfos(): List { return localProviders.values.mapNotNull { it.getSearchScopesInfo() } + (frontendProvidersFacade?.getSearchScopesInfos()?.values ?: emptyList()) } diff --git a/platform/searchEverywhere/frontend/src/tabs/target/SeScopeChooserActionProvider.kt b/platform/searchEverywhere/frontend/src/tabs/target/SeScopeChooserActionProvider.kt index 798f311fee21..e4af3ed22127 100644 --- a/platform/searchEverywhere/frontend/src/tabs/target/SeScopeChooserActionProvider.kt +++ b/platform/searchEverywhere/frontend/src/tabs/target/SeScopeChooserActionProvider.kt @@ -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 = scopesInfo.scopes.associate { val descriptor = if (it.isSeparator) ScopeSeparator(it.name) diff --git a/platform/searchEverywhere/frontend/src/tabs/target/SeTargetsFilterEditor.kt b/platform/searchEverywhere/frontend/src/tabs/target/SeTargetsFilterEditor.kt index 5d8fd89976cd..15bb03d4ff10 100644 --- a/platform/searchEverywhere/frontend/src/tabs/target/SeTargetsFilterEditor.kt +++ b/platform/searchEverywhere/frontend/src/tabs/target/SeTargetsFilterEditor.kt @@ -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?) : SeFilterEditorBase( SeTargetsFilter(scopesInfo?.selectedScopeId, hiddenTypes(typeVisibilityStates)) ) { diff --git a/platform/searchEverywhere/frontend/src/tabs/text/SeTextFilterEditor.kt b/platform/searchEverywhere/frontend/src/tabs/text/SeTextFilterEditor.kt index 70f731b06cf5..c4124b6e7711 100644 --- a/platform/searchEverywhere/frontend/src/tabs/text/SeTextFilterEditor.kt +++ b/platform/searchEverywhere/frontend/src/tabs/text/SeTextFilterEditor.kt @@ -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(scopesInfo?.selectedScopeId, null) ) { diff --git a/platform/searchEverywhere/shared/BUILD.bazel b/platform/searchEverywhere/shared/BUILD.bazel index 0da90d95ced1..7bc5c3c889df 100644 --- a/platform/searchEverywhere/shared/BUILD.bazel +++ b/platform/searchEverywhere/shared/BUILD.bazel @@ -30,6 +30,7 @@ jvm_library( "//platform/usageView", "//platform/execution-impl", "//platform/statistics", + "//platform/scopes", ], exports = [ "//platform/lang-impl", diff --git a/platform/searchEverywhere/shared/intellij.platform.searchEverywhere.iml b/platform/searchEverywhere/shared/intellij.platform.searchEverywhere.iml index dcce56f05ad4..2029015ebedd 100644 --- a/platform/searchEverywhere/shared/intellij.platform.searchEverywhere.iml +++ b/platform/searchEverywhere/shared/intellij.platform.searchEverywhere.iml @@ -51,5 +51,6 @@ + \ No newline at end of file diff --git a/platform/searchEverywhere/shared/src/SeSearchScopeData.kt b/platform/searchEverywhere/shared/src/SeSearchScopeData.kt deleted file mode 100644 index 500ebad96513..000000000000 --- a/platform/searchEverywhere/shared/src/SeSearchScopeData.kt +++ /dev/null @@ -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, - val selectedScopeId: String?, - val projectScopeId: String?, - val everywhereScopeId: String?) diff --git a/platform/searchEverywhere/shared/src/SeSearchScopesProvider.kt b/platform/searchEverywhere/shared/src/SeSearchScopesProvider.kt index 39325d09b53d..8cab45778b09 100644 --- a/platform/searchEverywhere/shared/src/SeSearchScopesProvider.kt +++ b/platform/searchEverywhere/shared/src/SeSearchScopesProvider.kt @@ -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? } \ No newline at end of file diff --git a/platform/searchEverywhere/shared/src/impl/SeRemoteApi.kt b/platform/searchEverywhere/shared/src/impl/SeRemoteApi.kt index 73c69ac360d8..a0d75e9452b6 100644 --- a/platform/searchEverywhere/shared/src/impl/SeRemoteApi.kt +++ b/platform/searchEverywhere/shared/src/impl/SeRemoteApi.kt @@ -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 { dataContextId: DataContextId, providerIds: List, isAllTab: Boolean, - ): Map + ): Map suspend fun getTypeVisibilityStatesForProviders( index: Int, diff --git a/platform/searchEverywhere/shared/src/providers/SeLocalItemDataProvider.kt b/platform/searchEverywhere/shared/src/providers/SeLocalItemDataProvider.kt index 9bf119de936a..490ff4a7daa9 100644 --- a/platform/searchEverywhere/shared/src/providers/SeLocalItemDataProvider.kt +++ b/platform/searchEverywhere/shared/src/providers/SeLocalItemDataProvider.kt @@ -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() }