diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt index af5bdacee7b..abacd4849a0 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/core/script/GradleScriptTemplateProvider.kt @@ -236,6 +236,9 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD private class ErrorScriptDependenciesResolver(private val message: String? = null) : DependenciesResolver { override fun resolve(scriptContents: ScriptContents, environment: Environment): ResolveResult { + if (ReloadGradleTemplatesOnSync.gradleState.isSyncInProgress) { + return ResolveResult.Failure(ScriptReport("Highlighting is impossible during Gradle Import", ScriptReport.Severity.WARNING)) + } return ResolveResult.Failure( ScriptReport( message ?: "Failed to load script definitions by ${GradleScriptDefinitionsContributor::class.java.name}" @@ -245,10 +248,25 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD } } +internal class GradleSyncState { + var isSyncInProgress: Boolean = false +} + class ReloadGradleTemplatesOnSync : ExternalSystemTaskNotificationListenerAdapter() { + companion object { + internal val gradleState = GradleSyncState() + } + + override fun onStart(id: ExternalSystemTaskId, workingDir: String?) { + if (id.type == ExternalSystemTaskType.RESOLVE_PROJECT && id.projectSystemId == GRADLE_SYSTEM_ID) { + gradleState.isSyncInProgress = true + } + } override fun onEnd(id: ExternalSystemTaskId) { if (id.type == ExternalSystemTaskType.RESOLVE_PROJECT && id.projectSystemId == GRADLE_SYSTEM_ID) { + gradleState.isSyncInProgress = false + val project = id.findProject() ?: return val gradleDefinitionsContributor = ScriptDefinitionContributor.find(project) gradleDefinitionsContributor?.reloadIfNeccessary()