Scratch: should always have default script definition

This commit is contained in:
Natalia Selezneva
2019-06-26 09:36:34 +03:00
parent b0c9339dee
commit 4853190752
@@ -20,6 +20,7 @@ import com.intellij.diagnostic.PluginException
import com.intellij.execution.console.IdeConsoleRootType
import com.intellij.ide.plugins.PluginManagerCore
import com.intellij.ide.scratch.ScratchFileService
import com.intellij.ide.scratch.ScratchRootType
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.components.ServiceManager
@@ -77,7 +78,14 @@ class ScriptDefinitionsManager(private val project: Project) : LazyScriptDefinit
val cached = scriptDefinitionsCacheLock.write { scriptDefinitionsCache.get(file) }
if (cached != null) return cached
val definition = super.findDefinition(file) ?: return null
val virtualFile = VfsUtil.findFileByIoFile(file, true)
val definition =
if (virtualFile != null && ScratchFileService.getInstance().getRootType(virtualFile) is ScratchRootType) {
// Scratch should always have default script definition
getDefaultDefinition()
} else {
super.findDefinition(file) ?: return null
}
scriptDefinitionsCacheLock.write {
scriptDefinitionsCache.put(file, definition)