IDE: IndexNotReadyException while creating new Kotlin file in Dumb mode
^KT-42518
This commit is contained in:
+14
-3
@@ -10,6 +10,7 @@ import com.intellij.openapi.command.WriteCommandAction
|
|||||||
import com.intellij.openapi.diagnostic.Logger
|
import com.intellij.openapi.diagnostic.Logger
|
||||||
import com.intellij.openapi.extensions.Extensions
|
import com.intellij.openapi.extensions.Extensions
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
|
import com.intellij.openapi.project.DumbService
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.projectRoots.JavaSdkVersion
|
import com.intellij.openapi.projectRoots.JavaSdkVersion
|
||||||
import com.intellij.openapi.roots.DependencyScope
|
import com.intellij.openapi.roots.DependencyScope
|
||||||
@@ -27,6 +28,7 @@ import org.jetbrains.annotations.CalledInBackground
|
|||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
import org.jetbrains.kotlin.builtins.StandardNames
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.KotlinJvmBundle
|
import org.jetbrains.kotlin.idea.KotlinJvmBundle
|
||||||
|
import org.jetbrains.kotlin.idea.actions.internal.refactoringTesting.readAction
|
||||||
import org.jetbrains.kotlin.idea.core.util.getKotlinJvmRuntimeMarkerClass
|
import org.jetbrains.kotlin.idea.core.util.getKotlinJvmRuntimeMarkerClass
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.framework.effectiveKind
|
import org.jetbrains.kotlin.idea.framework.effectiveKind
|
||||||
@@ -162,10 +164,19 @@ fun getConfigurableModulesWithKotlinFiles(project: Project): List<ModuleSourceRo
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun showConfigureKotlinNotificationIfNeeded(module: Module) {
|
fun showConfigureKotlinNotificationIfNeeded(module: Module) {
|
||||||
val moduleGroup = module.toModuleGroup()
|
val action: () -> Unit = {
|
||||||
if (!isNotConfiguredNotificationRequired(moduleGroup)) return
|
val moduleGroup = module.toModuleGroup()
|
||||||
|
if (isNotConfiguredNotificationRequired(moduleGroup)) {
|
||||||
|
ConfigureKotlinNotificationManager.notify(module.project)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ConfigureKotlinNotificationManager.notify(module.project)
|
val dumbService = DumbService.getInstance(module.project)
|
||||||
|
if (dumbService.isDumb) {
|
||||||
|
dumbService.smartInvokeLater { action() }
|
||||||
|
} else {
|
||||||
|
action()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isNotConfiguredNotificationRequired(moduleGroup: ModuleSourceRootGroup): Boolean {
|
fun isNotConfiguredNotificationRequired(moduleGroup: ModuleSourceRootGroup): Boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user