Don't highlight gradle scripts during gradle import.
Show warning on the top panel for these files
This commit is contained in:
+18
@@ -236,6 +236,9 @@ class GradleScriptDefinitionsContributor(private val project: Project) : ScriptD
|
|||||||
|
|
||||||
private class ErrorScriptDependenciesResolver(private val message: String? = null) : DependenciesResolver {
|
private class ErrorScriptDependenciesResolver(private val message: String? = null) : DependenciesResolver {
|
||||||
override fun resolve(scriptContents: ScriptContents, environment: Environment): ResolveResult {
|
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(
|
return ResolveResult.Failure(
|
||||||
ScriptReport(
|
ScriptReport(
|
||||||
message ?: "Failed to load script definitions by ${GradleScriptDefinitionsContributor::class.java.name}"
|
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() {
|
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) {
|
override fun onEnd(id: ExternalSystemTaskId) {
|
||||||
if (id.type == ExternalSystemTaskType.RESOLVE_PROJECT && id.projectSystemId == GRADLE_SYSTEM_ID) {
|
if (id.type == ExternalSystemTaskType.RESOLVE_PROJECT && id.projectSystemId == GRADLE_SYSTEM_ID) {
|
||||||
|
gradleState.isSyncInProgress = false
|
||||||
|
|
||||||
val project = id.findProject() ?: return
|
val project = id.findProject() ?: return
|
||||||
val gradleDefinitionsContributor = ScriptDefinitionContributor.find<GradleScriptDefinitionsContributor>(project)
|
val gradleDefinitionsContributor = ScriptDefinitionContributor.find<GradleScriptDefinitionsContributor>(project)
|
||||||
gradleDefinitionsContributor?.reloadIfNeccessary()
|
gradleDefinitionsContributor?.reloadIfNeccessary()
|
||||||
|
|||||||
Reference in New Issue
Block a user