mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
[threading] IJPL-190260: Remove blockingContext #4
GitOrigin-RevId: f4c7e6b93b7ffec26c0f6702baf2c691342fb516
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f56f2f22d5
commit
2b56c468e9
@@ -6,7 +6,6 @@ import com.intellij.openapi.application.EDT
|
|||||||
import com.intellij.openapi.diagnostic.logger
|
import com.intellij.openapi.diagnostic.logger
|
||||||
import com.intellij.openapi.extensions.ExtensionPointName
|
import com.intellij.openapi.extensions.ExtensionPointName
|
||||||
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
import com.intellij.openapi.externalSystem.model.ProjectSystemId
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -32,10 +31,8 @@ interface ExternalSystemUnlinkedProjectAware {
|
|||||||
|
|
||||||
suspend fun linkAndLoadProjectAsync(project: Project, externalProjectPath: String) {
|
suspend fun linkAndLoadProjectAsync(project: Project, externalProjectPath: String) {
|
||||||
withContext(Dispatchers.EDT) {
|
withContext(Dispatchers.EDT) {
|
||||||
blockingContext {
|
@Suppress("DEPRECATION")
|
||||||
@Suppress("DEPRECATION")
|
linkAndLoadProject(project, externalProjectPath)
|
||||||
linkAndLoadProject(project, externalProjectPath)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import com.intellij.openapi.externalSystem.service.project.manage.ExternalProjec
|
|||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemActivityKey
|
import com.intellij.openapi.externalSystem.util.ExternalSystemActivityKey
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemInProgressService
|
import com.intellij.openapi.externalSystem.util.ExternalSystemInProgressService
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.startup.ProjectActivity
|
import com.intellij.openapi.startup.ProjectActivity
|
||||||
import com.intellij.openapi.startup.StartupActivity
|
import com.intellij.openapi.startup.StartupActivity
|
||||||
@@ -29,9 +28,7 @@ internal class ExternalSystemStartupActivity : ProjectActivity {
|
|||||||
val esProjectsManager = readAction {
|
val esProjectsManager = readAction {
|
||||||
ExternalProjectsManagerImpl.getInstance(project)
|
ExternalProjectsManagerImpl.getInstance(project)
|
||||||
}
|
}
|
||||||
blockingContext {
|
esProjectsManager.init()
|
||||||
esProjectsManager.init()
|
|
||||||
}
|
|
||||||
|
|
||||||
// do not compute in EDT
|
// do not compute in EDT
|
||||||
val managers = ExternalSystemManager.EP_NAME.extensionList
|
val managers = ExternalSystemManager.EP_NAME.extensionList
|
||||||
@@ -39,9 +36,7 @@ internal class ExternalSystemStartupActivity : ProjectActivity {
|
|||||||
for (manager in managers) {
|
for (manager in managers) {
|
||||||
runCatching {
|
runCatching {
|
||||||
if (manager is StartupActivity) {
|
if (manager is StartupActivity) {
|
||||||
blockingContext {
|
manager.runActivity(project)
|
||||||
manager.runActivity(project)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (manager is ProjectActivity) {
|
else if (manager is ProjectActivity) {
|
||||||
manager.execute(project)
|
manager.execute(project)
|
||||||
@@ -54,16 +49,12 @@ internal class ExternalSystemStartupActivity : ProjectActivity {
|
|||||||
if (!isNewlyImportedProject && isNewlyCreatedProject) {
|
if (!isNewlyImportedProject && isNewlyCreatedProject) {
|
||||||
for (manager in managers) {
|
for (manager in managers) {
|
||||||
runCatching {
|
runCatching {
|
||||||
blockingContext {
|
ExternalSystemUtil.refreshProjects(ImportSpecBuilder(project, manager.systemId).createDirectoriesForEmptyContentRoots())
|
||||||
ExternalSystemUtil.refreshProjects(ImportSpecBuilder(project, manager.systemId).createDirectoriesForEmptyContentRoots())
|
|
||||||
}
|
|
||||||
}.getOrLogException(logger<ExternalSystemStartupActivity>())
|
}.getOrLogException(logger<ExternalSystemStartupActivity>())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
blockingContext {
|
ProjectRenameAware.beAware(project)
|
||||||
ProjectRenameAware.beAware(project)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import com.intellij.ide.actions.cache.RecoveryScope
|
|||||||
import com.intellij.openapi.externalSystem.settings.workspaceModel.ExternalProjectsBuildClasspathEntity
|
import com.intellij.openapi.externalSystem.settings.workspaceModel.ExternalProjectsBuildClasspathEntity
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.progress.blockingContextScope
|
import com.intellij.openapi.progress.blockingContextScope
|
||||||
import com.intellij.openapi.util.io.NioFiles
|
import com.intellij.openapi.util.io.NioFiles
|
||||||
import com.intellij.platform.backend.workspace.workspaceModel
|
import com.intellij.platform.backend.workspace.workspaceModel
|
||||||
@@ -35,12 +34,10 @@ class ExternalProjectDataRecoveryContributor : ExternalSystemRecoveryContributor
|
|||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun invalidateLocalExternalSystemCache(recoveryScope: RecoveryScope) {
|
private suspend fun invalidateLocalExternalSystemCache(recoveryScope: RecoveryScope) {
|
||||||
blockingContext {
|
val project = recoveryScope.project
|
||||||
val project = recoveryScope.project
|
for (manager in ExternalSystemApiUtil.getAllManagers()) {
|
||||||
for (manager in ExternalSystemApiUtil.getAllManagers()) {
|
val localSettings = manager.getLocalSettingsProvider().`fun`(project)
|
||||||
val localSettings = manager.getLocalSettingsProvider().`fun`(project)
|
localSettings.invalidateCaches()
|
||||||
localSettings.invalidateCaches()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,16 +49,14 @@ class ExternalProjectDataRecoveryContributor : ExternalSystemRecoveryContributor
|
|||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun invalidateExternalSystemDataStorage(recoveryScope: RecoveryScope) {
|
private suspend fun invalidateExternalSystemDataStorage(recoveryScope: RecoveryScope) {
|
||||||
blockingContext {
|
val project = recoveryScope.project
|
||||||
val project = recoveryScope.project
|
val dataStorage = ExternalProjectsDataStorage.getInstance(project)
|
||||||
val dataStorage = ExternalProjectsDataStorage.getInstance(project)
|
for (manager in ExternalSystemApiUtil.getAllManagers()) {
|
||||||
for (manager in ExternalSystemApiUtil.getAllManagers()) {
|
val systemId = manager.getSystemId()
|
||||||
val systemId = manager.getSystemId()
|
val settings = manager.getSettingsProvider().`fun`(project)
|
||||||
val settings = manager.getSettingsProvider().`fun`(project)
|
for (projectSettings in settings.linkedProjectsSettings) {
|
||||||
for (projectSettings in settings.linkedProjectsSettings) {
|
val externalProjectPath = projectSettings.externalProjectPath
|
||||||
val externalProjectPath = projectSettings.externalProjectPath
|
dataStorage.remove(systemId, externalProjectPath)
|
||||||
dataStorage.remove(systemId, externalProjectPath)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
|||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemBundle
|
import com.intellij.openapi.externalSystem.util.ExternalSystemBundle
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemUiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemUiUtil
|
||||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
import com.intellij.openapi.fileChooser.FileChooserDescriptor
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.ui.getCanonicalPath
|
import com.intellij.openapi.ui.getCanonicalPath
|
||||||
|
|
||||||
@@ -27,22 +26,20 @@ class ExternalSystemWorkingDirectoryInfo(
|
|||||||
override val emptyFieldError: String = ExternalSystemBundle.message("run.configuration.project.path.empty.error", readableName)
|
override val emptyFieldError: String = ExternalSystemBundle.message("run.configuration.project.path.empty.error", readableName)
|
||||||
|
|
||||||
override suspend fun collectExternalProjects(): List<ExternalProject> {
|
override suspend fun collectExternalProjects(): List<ExternalProject> {
|
||||||
return blockingContext {
|
val externalProjects = ArrayList<ExternalProject>()
|
||||||
val externalProjects = ArrayList<ExternalProject>()
|
val localSettings = ExternalSystemApiUtil.getLocalSettings<AbstractExternalSystemLocalSettings<*>>(project, externalSystemId)
|
||||||
val localSettings = ExternalSystemApiUtil.getLocalSettings<AbstractExternalSystemLocalSettings<*>>(project, externalSystemId)
|
val uiAware = ExternalSystemUiUtil.getUiAware(externalSystemId)
|
||||||
val uiAware = ExternalSystemUiUtil.getUiAware(externalSystemId)
|
for ((parent, children) in localSettings.availableProjects) {
|
||||||
for ((parent, children) in localSettings.availableProjects) {
|
val parentPath = getCanonicalPath(parent.path)
|
||||||
val parentPath = getCanonicalPath(parent.path)
|
val parentName = uiAware.getProjectRepresentationName(project, parentPath, null)
|
||||||
val parentName = uiAware.getProjectRepresentationName(project, parentPath, null)
|
externalProjects.add(ExternalProject(parentName, parentPath))
|
||||||
externalProjects.add(ExternalProject(parentName, parentPath))
|
for (child in children) {
|
||||||
for (child in children) {
|
val childPath = getCanonicalPath(child.path)
|
||||||
val childPath = getCanonicalPath(child.path)
|
if (parentPath == childPath) continue
|
||||||
if (parentPath == childPath) continue
|
val childName = uiAware.getProjectRepresentationName(project, childPath, parentPath)
|
||||||
val childName = uiAware.getProjectRepresentationName(project, childPath, parentPath)
|
externalProjects.add(ExternalProject(childName, childPath))
|
||||||
externalProjects.add(ExternalProject(childName, childPath))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return@blockingContext externalProjects
|
|
||||||
}
|
}
|
||||||
|
return externalProjects
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
package com.intellij.openapi.fileEditor.impl
|
package com.intellij.openapi.fileEditor.impl
|
||||||
|
|
||||||
import com.intellij.openapi.extensions.ExtensionPointName
|
import com.intellij.openapi.extensions.ExtensionPointName
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.DumbAware
|
import com.intellij.openapi.project.DumbAware
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.NlsContexts
|
import com.intellij.openapi.util.NlsContexts
|
||||||
@@ -35,9 +34,7 @@ interface EditorTabTitleProvider : DumbAware {
|
|||||||
// Because it is quite extensively used when tabs are restored during project opening.
|
// Because it is quite extensively used when tabs are restored during project opening.
|
||||||
// While implementations may perform long-running blocking operations, that may block all the threads of the coroutine pool.
|
// While implementations may perform long-running blocking operations, that may block all the threads of the coroutine pool.
|
||||||
return withContext(limitedDispatcher) {
|
return withContext(limitedDispatcher) {
|
||||||
blockingContext {
|
getEditorTabTitle(project, file)
|
||||||
getEditorTabTitle(project, file)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.intellij.facet.impl.pointers
|
|||||||
|
|
||||||
import com.intellij.facet.pointers.FacetPointersManager
|
import com.intellij.facet.pointers.FacetPointersManager
|
||||||
import com.intellij.openapi.components.serviceAsync
|
import com.intellij.openapi.components.serviceAsync
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.DumbService
|
import com.intellij.openapi.project.DumbService
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.startup.ProjectActivity
|
import com.intellij.openapi.startup.ProjectActivity
|
||||||
@@ -12,10 +11,8 @@ private class FacetPointersPostStartupActivity : ProjectActivity {
|
|||||||
override suspend fun execute(project: Project) {
|
override suspend fun execute(project: Project) {
|
||||||
val manager = project.serviceAsync<FacetPointersManager>()
|
val manager = project.serviceAsync<FacetPointersManager>()
|
||||||
if (manager is FacetPointersManagerImpl) {
|
if (manager is FacetPointersManagerImpl) {
|
||||||
blockingContext {
|
DumbService.getInstance(project).smartInvokeLater {
|
||||||
DumbService.getInstance(project).smartInvokeLater {
|
manager.refreshPointers()
|
||||||
manager.refreshPointers()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ package com.intellij.ide.environment.impl
|
|||||||
import com.fasterxml.jackson.core.JsonFactory
|
import com.fasterxml.jackson.core.JsonFactory
|
||||||
import com.fasterxml.jackson.core.util.DefaultIndenter
|
import com.fasterxml.jackson.core.util.DefaultIndenter
|
||||||
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
|
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
|
||||||
|
import com.intellij.ide.environment.EnvironmentKey
|
||||||
import com.intellij.ide.environment.EnvironmentKeyProvider
|
import com.intellij.ide.environment.EnvironmentKeyProvider
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.application.EDT
|
import com.intellij.openapi.application.EDT
|
||||||
import com.intellij.openapi.application.ModernApplicationStarter
|
import com.intellij.openapi.application.ModernApplicationStarter
|
||||||
import com.intellij.openapi.diagnostic.logger
|
import com.intellij.openapi.diagnostic.logger
|
||||||
import com.intellij.openapi.diagnostic.thisLogger
|
import com.intellij.openapi.diagnostic.thisLogger
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.platform.util.ArgsParser
|
import com.intellij.platform.util.ArgsParser
|
||||||
import com.intellij.util.io.createParentDirectories
|
import com.intellij.util.io.createParentDirectories
|
||||||
import com.intellij.util.io.write
|
import com.intellij.util.io.write
|
||||||
@@ -19,6 +19,7 @@ import kotlinx.coroutines.withContext
|
|||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.nio.file.FileAlreadyExistsException
|
import java.nio.file.FileAlreadyExistsException
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
import java.util.function.Supplier
|
||||||
import kotlin.io.path.Path
|
import kotlin.io.path.Path
|
||||||
import kotlin.io.path.absolute
|
import kotlin.io.path.absolute
|
||||||
import kotlin.io.path.createFile
|
import kotlin.io.path.createFile
|
||||||
@@ -61,9 +62,7 @@ class EnvironmentKeyStubGenerator : ModernApplicationStarter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun generateKeyConfig(generateDescriptions: Boolean, configuration: EnvironmentConfiguration): ByteArray {
|
private suspend fun generateKeyConfig(generateDescriptions: Boolean, configuration: EnvironmentConfiguration): ByteArray {
|
||||||
val environmentKeys = blockingContext {
|
val environmentKeys = EnvironmentKeyProvider.EP_NAME.extensionList.flatMap { it.knownKeys.toList() }.sortedBy { it.first.id }
|
||||||
EnvironmentKeyProvider.EP_NAME.extensionList.flatMap { it.knownKeys.toList() }
|
|
||||||
}.sortedBy { it.first.id }
|
|
||||||
|
|
||||||
val registeredKeys = environmentKeys.mapTo(HashSet()) { it.first }
|
val registeredKeys = environmentKeys.mapTo(HashSet()) { it.first }
|
||||||
val unregisteredValues = configuration.map.entries.filter { it.key !in registeredKeys }
|
val unregisteredValues = configuration.map.entries.filter { it.key !in registeredKeys }
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx
|
|||||||
import com.intellij.openapi.fileEditor.impl.EditorWindow
|
import com.intellij.openapi.fileEditor.impl.EditorWindow
|
||||||
import com.intellij.openapi.fileEditor.impl.FileEditorOpenOptions
|
import com.intellij.openapi.fileEditor.impl.FileEditorOpenOptions
|
||||||
import com.intellij.openapi.fileEditor.impl.NonProjectFileWritingAccessProvider
|
import com.intellij.openapi.fileEditor.impl.NonProjectFileWritingAccessProvider
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.vfs.LocalFileSystem
|
import com.intellij.openapi.vfs.LocalFileSystem
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
@@ -111,18 +110,16 @@ class FileDropManager(
|
|||||||
}
|
}
|
||||||
|
|
||||||
withContext(Dispatchers.EDT) {
|
withContext(Dispatchers.EDT) {
|
||||||
blockingContext {
|
for (vFile in vFiles) {
|
||||||
for (vFile in vFiles) {
|
if (editorWindow != null && !editorWindow.isDisposed) {
|
||||||
if (editorWindow != null && !editorWindow.isDisposed) {
|
val fileEditorManager = FileEditorManager.getInstance(project) as FileEditorManagerEx
|
||||||
val fileEditorManager = FileEditorManager.getInstance(project) as FileEditorManagerEx
|
val pair = fileEditorManager.openFile(vFile, editorWindow, FileEditorOpenOptions(requestFocus = true))
|
||||||
val pair = fileEditorManager.openFile(vFile, editorWindow, FileEditorOpenOptions(requestFocus = true))
|
if (pair.allEditors.isNotEmpty()) {
|
||||||
if (pair.allEditors.isNotEmpty()) {
|
continue
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PsiNavigationSupport.getInstance().createNavigatable(project, vFile, -1).navigate(true)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PsiNavigationSupport.getInstance().createNavigatable(project, vFile, -1).navigate(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -135,11 +132,9 @@ private class CustomFileDropHandlerBridge : FileDropHandler {
|
|||||||
if (extensions.isEmpty()) return false
|
if (extensions.isEmpty()) return false
|
||||||
|
|
||||||
return withContext(Dispatchers.EDT) {
|
return withContext(Dispatchers.EDT) {
|
||||||
blockingContext {
|
extensions.any {
|
||||||
extensions.any {
|
it.canHandle(e.transferable, e.editor)
|
||||||
it.canHandle(e.transferable, e.editor)
|
&& it.handleDrop(e.transferable, e.editor, e.project)
|
||||||
&& it.handleDrop(e.transferable, e.editor, e.project)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import com.intellij.openapi.components.serviceAsync
|
|||||||
import com.intellij.openapi.diagnostic.logger
|
import com.intellij.openapi.diagnostic.logger
|
||||||
import com.intellij.openapi.fileTypes.FileTypeManager
|
import com.intellij.openapi.fileTypes.FileTypeManager
|
||||||
import com.intellij.openapi.fileTypes.INativeFileType
|
import com.intellij.openapi.fileTypes.INativeFileType
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.pom.Navigatable
|
import com.intellij.pom.Navigatable
|
||||||
import com.intellij.util.concurrency.annotations.RequiresEdt
|
import com.intellij.util.concurrency.annotations.RequiresEdt
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
@@ -89,9 +88,7 @@ class FileNavigatorImpl : FileNavigator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
withContext(Dispatchers.EDT) {
|
withContext(Dispatchers.EDT) {
|
||||||
blockingContext {
|
OpenFileDescriptor.navigateInEditor(descriptor, e)
|
||||||
OpenFileDescriptor.navigateInEditor(descriptor, e)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.intellij.openapi.fileEditor.impl.HistoryEntry.Companion.FILE_ATTRIBUT
|
|||||||
import com.intellij.openapi.fileEditor.impl.HistoryEntry.Companion.TAG
|
import com.intellij.openapi.fileEditor.impl.HistoryEntry.Companion.TAG
|
||||||
import com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader
|
import com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader
|
||||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorImpl
|
import com.intellij.openapi.fileEditor.impl.text.TextEditorImpl
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.DumbService
|
import com.intellij.openapi.project.DumbService
|
||||||
import com.intellij.openapi.project.PossiblyDumbAware
|
import com.intellij.openapi.project.PossiblyDumbAware
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
@@ -220,12 +219,10 @@ open class EditorComposite internal constructor(
|
|||||||
val (goodPublisher, deprecatedPublisher) = deferredPublishers.await()
|
val (goodPublisher, deprecatedPublisher) = deferredPublishers.await()
|
||||||
span("file opening in EDT and repaint", Dispatchers.ui(UiDispatcherKind.RELAX)) {
|
span("file opening in EDT and repaint", Dispatchers.ui(UiDispatcherKind.RELAX)) {
|
||||||
span("beforeFileOpened event executing") {
|
span("beforeFileOpened event executing") {
|
||||||
blockingContext {
|
computeOrLogException(
|
||||||
computeOrLogException(
|
lambda = { beforePublisher!!.beforeFileOpened(fileEditorManager, file) },
|
||||||
lambda = { beforePublisher!!.beforeFileOpened(fileEditorManager, file) },
|
errorMessage = { "exception during beforeFileOpened notification" },
|
||||||
errorMessage = { "exception during beforeFileOpened notification" },
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
applyFileEditorsInEdt(
|
applyFileEditorsInEdt(
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import com.intellij.openapi.fileEditor.impl.text.FileEditorDropHandler
|
|||||||
import com.intellij.openapi.keymap.Keymap
|
import com.intellij.openapi.keymap.Keymap
|
||||||
import com.intellij.openapi.keymap.KeymapManagerListener
|
import com.intellij.openapi.keymap.KeymapManagerListener
|
||||||
import com.intellij.openapi.keymap.KeymapUtil
|
import com.intellij.openapi.keymap.KeymapUtil
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.project.ProjectLocator
|
import com.intellij.openapi.project.ProjectLocator
|
||||||
import com.intellij.openapi.ui.Divider
|
import com.intellij.openapi.ui.Divider
|
||||||
@@ -1090,19 +1089,17 @@ private fun computeFileEntry(
|
|||||||
val fileProviderDeferred = compositeCoroutineScope.async(start = if (fileEntry.currentInTab) CoroutineStart.DEFAULT else CoroutineStart.LAZY) {
|
val fileProviderDeferred = compositeCoroutineScope.async(start = if (fileEntry.currentInTab) CoroutineStart.DEFAULT else CoroutineStart.LAZY) {
|
||||||
// https://youtrack.jetbrains.com/issue/IJPL-157845/Incorrect-encoding-of-file-during-project-opening
|
// https://youtrack.jetbrains.com/issue/IJPL-157845/Incorrect-encoding-of-file-during-project-opening
|
||||||
if (notFullyPreparedFile !is VirtualFileWithoutContent && !notFullyPreparedFile.isCharsetSet) {
|
if (notFullyPreparedFile !is VirtualFileWithoutContent && !notFullyPreparedFile.isCharsetSet) {
|
||||||
blockingContext {
|
ProjectLocator.withPreferredProject(notFullyPreparedFile, fileEditorManager.project).use {
|
||||||
ProjectLocator.withPreferredProject(notFullyPreparedFile, fileEditorManager.project).use {
|
try {
|
||||||
try {
|
notFullyPreparedFile.contentsToByteArray(true)
|
||||||
notFullyPreparedFile.contentsToByteArray(true)
|
}
|
||||||
}
|
catch (e: CancellationException) {
|
||||||
catch (e: CancellationException) {
|
throw e
|
||||||
throw e
|
}
|
||||||
}
|
catch (ignore: FileTooBigException) {
|
||||||
catch (ignore: FileTooBigException) {
|
}
|
||||||
}
|
catch (e: Throwable) {
|
||||||
catch (e: Throwable) {
|
LOG.error(e)
|
||||||
LOG.error(e)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager
|
|||||||
import com.intellij.openapi.fileEditor.ex.FileEditorWithProvider
|
import com.intellij.openapi.fileEditor.ex.FileEditorWithProvider
|
||||||
import com.intellij.openapi.fileTypes.FileType
|
import com.intellij.openapi.fileTypes.FileType
|
||||||
import com.intellij.openapi.fileTypes.FileTypeRegistry
|
import com.intellij.openapi.fileTypes.FileTypeRegistry
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.DumbAware
|
import com.intellij.openapi.project.DumbAware
|
||||||
import com.intellij.openapi.project.DumbService
|
import com.intellij.openapi.project.DumbService
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
@@ -104,7 +103,7 @@ class FileEditorProviderManagerImpl
|
|||||||
|
|
||||||
val sharedProviders = coroutineScope {
|
val sharedProviders = coroutineScope {
|
||||||
val fileType = async {
|
val fileType = async {
|
||||||
blockingContext { file.fileType }
|
file.fileType
|
||||||
}
|
}
|
||||||
|
|
||||||
var hasDocument: Boolean? = null
|
var hasDocument: Boolean? = null
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import com.intellij.openapi.components.Service
|
|||||||
import com.intellij.openapi.components.service
|
import com.intellij.openapi.components.service
|
||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.diagnostic.logger
|
import com.intellij.openapi.diagnostic.logger
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.project.waitForSmartMode
|
import com.intellij.openapi.project.waitForSmartMode
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
@@ -116,15 +115,13 @@ class FUStateUsagesLogger private constructor(coroutineScope: CoroutineScope) :
|
|||||||
val data = mergeWithEventData(groupData, metric.data)
|
val data = mergeWithEventData(groupData, metric.data)
|
||||||
val eventData = data?.build() ?: emptyMap()
|
val eventData = data?.build() ?: emptyMap()
|
||||||
launch {
|
launch {
|
||||||
blockingContext { logger.logAsync(group, metric.eventId, eventData, true) }.asDeferred().join()
|
logger.logAsync(group, metric.eventId, eventData, true).asDeferred().join()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
launch {
|
launch {
|
||||||
blockingContext {
|
logger.logAsync(group, EventLogSystemEvents.STATE_COLLECTOR_INVOKED, FeatureUsageData(group.recorder).addProject(project).build(), true).join()
|
||||||
logger.logAsync(group, EventLogSystemEvents.STATE_COLLECTOR_INVOKED, FeatureUsageData(group.recorder).addProject(project).build(), true).join()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import com.intellij.codeWithMe.ClientId
|
|||||||
import com.intellij.openapi.Disposable
|
import com.intellij.openapi.Disposable
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.components.ComponentManagerEx
|
import com.intellij.openapi.components.ComponentManagerEx
|
||||||
import com.intellij.openapi.progress.blockingContext
|
|
||||||
import com.intellij.openapi.progress.runBlockingMaybeCancellable
|
import com.intellij.openapi.progress.runBlockingMaybeCancellable
|
||||||
import com.intellij.openapi.util.Disposer
|
import com.intellij.openapi.util.Disposer
|
||||||
import com.intellij.platform.util.coroutines.childScope
|
import com.intellij.platform.util.coroutines.childScope
|
||||||
@@ -87,9 +86,7 @@ class CoroutineDispatcherBackedExecutor(coroutineScope: CoroutineScope, name: St
|
|||||||
override fun execute(command: Runnable) {
|
override fun execute(command: Runnable) {
|
||||||
childScope.coroutineContext.ensureActive()
|
childScope.coroutineContext.ensureActive()
|
||||||
childScope.launch(ClientId.coroutineContext()) {
|
childScope.launch(ClientId.coroutineContext()) {
|
||||||
blockingContext {
|
command.run()
|
||||||
command.run()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,24 +27,20 @@ object GitCodeReviewUtils {
|
|||||||
|
|
||||||
suspend fun testRevisionsExist(repository: GitRepository, revisions: List<String>) =
|
suspend fun testRevisionsExist(repository: GitRepository, revisions: List<String>) =
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
blockingContext {
|
val h = GitLineHandler(repository.project, repository.root, GitCommand.CAT_FILE)
|
||||||
val h = GitLineHandler(repository.project, repository.root, GitCommand.CAT_FILE)
|
h.setSilent(true)
|
||||||
h.setSilent(true)
|
h.addParameters("--batch-check=%(objecttype)")
|
||||||
h.addParameters("--batch-check=%(objecttype)")
|
h.endOptions()
|
||||||
h.endOptions()
|
h.setInputProcessor(GitHandlerInputProcessorUtil.writeLines(revisions, StandardCharsets.UTF_8))
|
||||||
h.setInputProcessor(GitHandlerInputProcessorUtil.writeLines(revisions, StandardCharsets.UTF_8))
|
|
||||||
|
|
||||||
!Git.getInstance().runCommand(h).getOutputOrThrow().contains("missing")
|
!Git.getInstance().runCommand(h).getOutputOrThrow().contains("missing")
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun testIsAncestor(repository: GitRepository, potentialAncestorRev: String, rev: String): Boolean =
|
suspend fun testIsAncestor(repository: GitRepository, potentialAncestorRev: String, rev: String): Boolean =
|
||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
blockingContext {
|
val h = GitLineHandler(repository.project, repository.root, GitCommand.MERGE_BASE)
|
||||||
val h = GitLineHandler(repository.project, repository.root, GitCommand.MERGE_BASE)
|
h.setSilent(true)
|
||||||
h.setSilent(true)
|
h.addParameters("--is-ancestor", potentialAncestorRev, rev)
|
||||||
h.addParameters("--is-ancestor", potentialAncestorRev, rev)
|
Git.getInstance().runCommand(h).success()
|
||||||
Git.getInstance().runCommand(h).success()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user