gradle.kts standalone scripts: load configuration after switching without prompt
This commit is contained in:
+11
-8
@@ -158,7 +158,8 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
|
|||||||
file: KtFile,
|
file: KtFile,
|
||||||
isFirstLoad: Boolean,
|
isFirstLoad: Boolean,
|
||||||
forceSync: Boolean,
|
forceSync: Boolean,
|
||||||
fromCacheOnly: Boolean
|
fromCacheOnly: Boolean,
|
||||||
|
skipNotification: Boolean
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val virtualFile = file.originalFile.virtualFile ?: return false
|
val virtualFile = file.originalFile.virtualFile ?: return false
|
||||||
|
|
||||||
@@ -174,8 +175,8 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
|
|||||||
loaders.firstOrNull { it.loadDependencies(isFirstLoad, file, scriptDefinition, loadingContext) }
|
loaders.firstOrNull { it.loadDependencies(isFirstLoad, file, scriptDefinition, loadingContext) }
|
||||||
} else {
|
} else {
|
||||||
val autoReloadEnabled = KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition)
|
val autoReloadEnabled = KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition)
|
||||||
val postponeLoading = !autoReloadEnabled && async.any { it.isPostponedLoad(virtualFile) }
|
val postponeLoading = !skipNotification && !autoReloadEnabled && async.any { it.isPostponedLoad(virtualFile) }
|
||||||
val forceSkipNotification = autoReloadEnabled || postponeLoading
|
val forceSkipNotification = skipNotification || autoReloadEnabled || postponeLoading
|
||||||
|
|
||||||
if (postponeLoading) {
|
if (postponeLoading) {
|
||||||
LoadScriptConfigurationNotificationFactory.showNotification(virtualFile, project) {
|
LoadScriptConfigurationNotificationFactory.showNotification(virtualFile, project) {
|
||||||
@@ -384,7 +385,8 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura
|
|||||||
file: KtFile,
|
file: KtFile,
|
||||||
isFirstLoad: Boolean = getAppliedConfiguration(file.originalFile.virtualFile) == null,
|
isFirstLoad: Boolean = getAppliedConfiguration(file.originalFile.virtualFile) == null,
|
||||||
forceSync: Boolean = false,
|
forceSync: Boolean = false,
|
||||||
fromCacheOnly: Boolean = false
|
fromCacheOnly: Boolean = false,
|
||||||
|
skipNotification: Boolean = false
|
||||||
): Boolean
|
): Boolean
|
||||||
|
|
||||||
fun getCachedConfigurationState(file: VirtualFile?): ScriptConfigurationState? {
|
fun getCachedConfigurationState(file: VirtualFile?): ScriptConfigurationState? {
|
||||||
@@ -420,11 +422,11 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura
|
|||||||
/**
|
/**
|
||||||
* Load new configuration and suggest to apply it (only if it is changed)
|
* Load new configuration and suggest to apply it (only if it is changed)
|
||||||
*/
|
*/
|
||||||
fun ensureUpToDatedConfigurationSuggested(file: KtFile) {
|
fun ensureUpToDatedConfigurationSuggested(file: KtFile, skipNotification: Boolean = false) {
|
||||||
reloadIfOutOfDate(file)
|
reloadIfOutOfDate(file, skipNotification)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun reloadIfOutOfDate(file: KtFile, isPostponedLoad: Boolean = false) {
|
private fun reloadIfOutOfDate(file: KtFile, skipNotification: Boolean = false) {
|
||||||
if (!ScriptDefinitionsManager.getInstance(project).isReady()) return
|
if (!ScriptDefinitionsManager.getInstance(project).isReady()) return
|
||||||
|
|
||||||
manager.updater.update {
|
manager.updater.update {
|
||||||
@@ -434,7 +436,8 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura
|
|||||||
if (state == null || !state.isUpToDate(project, virtualFile, file)) {
|
if (state == null || !state.isUpToDate(project, virtualFile, file)) {
|
||||||
reloadOutOfDateConfiguration(
|
reloadOutOfDateConfiguration(
|
||||||
file,
|
file,
|
||||||
isFirstLoad = state == null
|
isFirstLoad = state == null,
|
||||||
|
skipNotification = skipNotification
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -397,7 +397,8 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
|
|||||||
if (virtualFile != null) {
|
if (virtualFile != null) {
|
||||||
val ktFile = PsiManager.getInstance(project).findFile(virtualFile) as? KtFile
|
val ktFile = PsiManager.getInstance(project).findFile(virtualFile) as? KtFile
|
||||||
if (ktFile != null) {
|
if (ktFile != null) {
|
||||||
ScriptConfigurationManager.getInstance(project).getConfiguration(ktFile)
|
DefaultScriptingSupport.getInstance(project)
|
||||||
|
.ensureUpToDatedConfigurationSuggested(ktFile, skipNotification = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user