gradle.kts legacy: don't start loading without prompt on first opening
This commit is contained in:
+14
@@ -14,6 +14,7 @@ import com.intellij.openapi.util.Ref
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.ui.EditorNotificationPanel
|
||||
import com.intellij.ui.HyperlinkLabel
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
||||
import org.jetbrains.kotlin.idea.core.util.KotlinIdeaCoreBundle
|
||||
import org.jetbrains.kotlin.psi.UserDataProperty
|
||||
@@ -30,6 +31,19 @@ object LoadScriptConfigurationNotificationFactory {
|
||||
return true
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
fun hasNotification(file: VirtualFile, project: Project): Boolean {
|
||||
return FileEditorManager.getInstance(project).getSelectedEditor(file)?.notificationPanel != null
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
fun performSuggestedLoading(file: VirtualFile, project: Project): Boolean {
|
||||
val notificationPanel = FileEditorManager.getInstance(project).getSelectedEditor(file)?.notificationPanel
|
||||
?: return false
|
||||
notificationPanel.onClick.invoke()
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
private fun VirtualFile.removeLoadConfigurationNotificationPanel(project: Project) {
|
||||
withSelectedEditor(project) { manager ->
|
||||
|
||||
+2
-12
@@ -158,7 +158,6 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
|
||||
file: KtFile,
|
||||
isFirstLoad: Boolean,
|
||||
forceSync: Boolean,
|
||||
isPostponedLoad: Boolean,
|
||||
fromCacheOnly: Boolean
|
||||
): Boolean {
|
||||
val virtualFile = file.originalFile.virtualFile ?: return false
|
||||
@@ -175,7 +174,7 @@ class DefaultScriptingSupport(manager: CompositeScriptConfigurationManager) : De
|
||||
loaders.firstOrNull { it.loadDependencies(isFirstLoad, file, scriptDefinition, loadingContext) }
|
||||
} else {
|
||||
val autoReloadEnabled = KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(scriptDefinition)
|
||||
val postponeLoading = isPostponedLoad && !autoReloadEnabled
|
||||
val postponeLoading = !autoReloadEnabled && async.any { it.isPostponedLoad(virtualFile) }
|
||||
|
||||
if (postponeLoading) {
|
||||
LoadScriptConfigurationNotificationFactory.showNotification(virtualFile, project) {
|
||||
@@ -390,7 +389,6 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura
|
||||
file: KtFile,
|
||||
isFirstLoad: Boolean = getAppliedConfiguration(file.originalFile.virtualFile) == null,
|
||||
forceSync: Boolean = false,
|
||||
isPostponedLoad: Boolean = false,
|
||||
fromCacheOnly: Boolean = false
|
||||
): Boolean
|
||||
|
||||
@@ -431,13 +429,6 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura
|
||||
reloadIfOutOfDate(file)
|
||||
}
|
||||
|
||||
/**
|
||||
* Show notification about changed script configuration with action to start loading it
|
||||
*/
|
||||
fun suggestToUpdateConfigurationIfOutOfDate(file: KtFile) {
|
||||
reloadIfOutOfDate(file, isPostponedLoad = true)
|
||||
}
|
||||
|
||||
private fun reloadIfOutOfDate(file: KtFile, isPostponedLoad: Boolean = false) {
|
||||
if (!ScriptDefinitionsManager.getInstance(project).isReady()) return
|
||||
|
||||
@@ -448,8 +439,7 @@ abstract class DefaultScriptingSupportBase(val manager: CompositeScriptConfigura
|
||||
if (state == null || !state.isUpToDate(project, virtualFile, file)) {
|
||||
reloadOutOfDateConfiguration(
|
||||
file,
|
||||
isFirstLoad = state == null,
|
||||
isPostponedLoad = isPostponedLoad
|
||||
isFirstLoad = state == null
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+8
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.configuration.loader
|
||||
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
|
||||
@@ -14,6 +15,13 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
* @see [org.jetbrains.kotlin.idea.core.script.configuration.DefaultScriptConfigurationManager] for more details.
|
||||
*/
|
||||
interface ScriptConfigurationLoader {
|
||||
/**
|
||||
* Show notification before doing load
|
||||
*
|
||||
* (by default loading notification will be shown only after loading, to check that configuration is changed)
|
||||
*/
|
||||
fun isPostponedLoad(virtualFile: VirtualFile): Boolean = false
|
||||
|
||||
fun shouldRunInBackground(scriptDefinition: ScriptDefinition): Boolean = false
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user