From 1f75eaed9ab2f37724e87f019cb572cd09eed73d Mon Sep 17 00:00:00 2001 From: Natalia Selezneva Date: Mon, 5 Mar 2018 10:28:46 +0300 Subject: [PATCH] Don't highlight gradle scripts during gradle import. Show warning on the top panel for these files --- .../script/GradleScriptTemplateProvider.kt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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()