mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[python] PY-83881 pass DumbAware runnable to runWhenProjectIsInitialized to avoid waiting for indexation before setting a correct sdk
(cherry picked from commit 0a8fd1b3ebcd459f45c24d4d58f2098abe190dc3) IJ-CR-181097 GitOrigin-RevId: 7a0d58aaf913eb9a1c1d035b1a8e16773b08b27c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
59e5932730
commit
e431ddbba0
+18
-7
@@ -4,10 +4,13 @@ package com.intellij.pycharm.community.ide.impl
|
||||
import com.intellij.ide.trustedProjects.TrustedProjects
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.components.Service
|
||||
import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.diagnostic.debug
|
||||
import com.intellij.openapi.diagnostic.thisLogger
|
||||
import com.intellij.openapi.extensions.ExtensionNotApplicableException
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.project.DumbAware
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.ProjectManager
|
||||
import com.intellij.openapi.project.impl.getOrInitializeModule
|
||||
@@ -39,7 +42,9 @@ import com.jetbrains.python.sdk.configuration.PyProjectSdkConfiguration.setSdkUs
|
||||
import com.jetbrains.python.sdk.configuration.PyProjectSdkConfiguration.suppressTipAndInspectionsFor
|
||||
import com.jetbrains.python.sdk.configuration.PyProjectSdkConfigurationExtension
|
||||
import com.jetbrains.python.sdk.impl.PySdkBundle
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import java.nio.file.Path
|
||||
@@ -72,16 +77,19 @@ class PythonSdkConfigurator : DirectoryProjectConfigurator {
|
||||
|
||||
val module = moduleRef.getOrInitializeModule(project, baseDir).also { thisLogger().debug { "Module: $it" } }
|
||||
|
||||
StartupManager.getInstance(project).runWhenProjectIsInitialized {
|
||||
PyPackageCoroutine.launch(project) {
|
||||
if (module.isDisposed) return@launch
|
||||
val sdkInfos = findSuitableCreateSdkInfos(module)
|
||||
withBackgroundProgress(project, PySdkBundle.message("python.configuring.interpreter.progress"), true) {
|
||||
val lifetime = suppressTipAndInspectionsFor(module, "all suitable extensions")
|
||||
lifetime.use { configureSdk(project, module, sdkInfos) }
|
||||
StartupManager.getInstance(project).runWhenProjectIsInitialized(object : Runnable, DumbAware {
|
||||
override fun run() {
|
||||
if (module.isDisposed) return
|
||||
service<MyCoroutineScopeProvider>().coroutineScope.launch {
|
||||
val sdkInfos = findSuitableCreateSdkInfos(module)
|
||||
withBackgroundProgress(project, PySdkBundle.message("python.configuring.interpreter.progress"), true) {
|
||||
val lifetime = suppressTipAndInspectionsFor(module, "all suitable extensions")
|
||||
lifetime.use { configureSdk(project, module, sdkInfos) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private suspend fun findSuitableCreateSdkInfos(module: Module): List<CreateSdkInfo> = withContext(Dispatchers.Default) {
|
||||
@@ -262,3 +270,6 @@ class PythonSdkConfigurator : DirectoryProjectConfigurator {
|
||||
return ProjectRootManager.getInstance(ProjectManager.getInstance().defaultProject).projectSdk?.takeIf { it.sdkType is PythonSdkType }
|
||||
}
|
||||
}
|
||||
|
||||
@Service
|
||||
private class MyCoroutineScopeProvider(val coroutineScope: CoroutineScope)
|
||||
|
||||
Reference in New Issue
Block a user