Fix highlighting for scripts in diff view (KT-30690)
^KT-30690 Fixed
This commit is contained in:
+7
-4
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.idea.highlighter
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiManager
|
||||
import org.jetbrains.kotlin.idea.caches.project.NotUnderContentRootModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
||||
import org.jetbrains.kotlin.idea.core.script.IdeScriptReportSink
|
||||
@@ -36,12 +37,14 @@ object KotlinHighlightingUtil {
|
||||
return true
|
||||
}
|
||||
|
||||
if (ktFile.isScript()) {
|
||||
return shouldHighlightScript(ktFile)
|
||||
if (OutsidersPsiFileSupportWrapper.isOutsiderFile(ktFile.virtualFile)) {
|
||||
val origin = OutsidersPsiFileSupportUtils.getOutsiderFileOrigin(ktFile.project, ktFile.virtualFile) ?: return false
|
||||
val psiFileOrigin = PsiManager.getInstance(ktFile.project).findFile(origin) ?: return false
|
||||
return shouldHighlight(psiFileOrigin)
|
||||
}
|
||||
|
||||
if (OutsidersPsiFileSupportWrapper.isOutsiderFile(ktFile.virtualFile)) {
|
||||
return true
|
||||
if (ktFile.isScript()) {
|
||||
return shouldHighlightScript(ktFile)
|
||||
}
|
||||
|
||||
return ProjectRootsUtil.isInProjectOrLibraryContent(ktFile) && ktFile.getModuleInfo() !is NotUnderContentRootModuleInfo
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.idea.core.script.dependencies.AsyncScriptDependenciesLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.dependencies.FromFileAttributeScriptDependenciesLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.dependencies.OutsiderFileDependenciesLoader
|
||||
import org.jetbrains.kotlin.idea.core.script.dependencies.SyncScriptDependenciesLoader
|
||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -54,6 +55,7 @@ class ScriptDependenciesUpdater(
|
||||
|
||||
private val loaders = arrayListOf(
|
||||
FromFileAttributeScriptDependenciesLoader(project),
|
||||
OutsiderFileDependenciesLoader(project),
|
||||
AsyncScriptDependenciesLoader(project),
|
||||
SyncScriptDependenciesLoader(project)
|
||||
)
|
||||
|
||||
+1
-10
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.core.script.scriptDependencies
|
||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||
|
||||
class FromFileAttributeScriptDependenciesLoader(project: Project) : ScriptDependenciesLoader(project) {
|
||||
|
||||
@@ -18,15 +17,7 @@ class FromFileAttributeScriptDependenciesLoader(project: Project) : ScriptDepend
|
||||
|
||||
override fun loadDependencies(file: VirtualFile) {
|
||||
val deserializedDependencies = file.scriptDependencies ?: return
|
||||
saveToCache(deserializedDependencies, file)
|
||||
}
|
||||
|
||||
private fun saveToCache(deserialized: ScriptDependencies, file: VirtualFile) {
|
||||
val rootsChanged = cache.hasNotCachedRoots(deserialized)
|
||||
cache.save(file, deserialized)
|
||||
if (rootsChanged) {
|
||||
shouldNotifyRootsChanged = true
|
||||
}
|
||||
saveToCache(file, deserializedDependencies)
|
||||
}
|
||||
|
||||
override fun shouldShowNotification(): Boolean = false
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesManager
|
||||
import org.jetbrains.kotlin.idea.highlighter.OutsidersPsiFileSupportUtils
|
||||
import org.jetbrains.kotlin.idea.highlighter.OutsidersPsiFileSupportWrapper
|
||||
|
||||
class OutsiderFileDependenciesLoader(project: Project) : ScriptDependenciesLoader(project) {
|
||||
override fun isApplicable(file: VirtualFile): Boolean {
|
||||
return OutsidersPsiFileSupportWrapper.isOutsiderFile(file)
|
||||
}
|
||||
|
||||
override fun loadDependencies(file: VirtualFile) {
|
||||
val fileOrigin = OutsidersPsiFileSupportUtils.getOutsiderFileOrigin(project, file) ?: return
|
||||
saveToCache(file, ScriptDependenciesManager.getInstance(project).getScriptDependencies(fileOrigin))
|
||||
}
|
||||
|
||||
override fun shouldShowNotification(): Boolean = false
|
||||
}
|
||||
+5
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.scripting.resolve.ScriptContentLoader
|
||||
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
|
||||
import org.jetbrains.kotlin.scripting.resolve.adjustByDefinition
|
||||
import kotlin.script.experimental.dependencies.DependenciesResolver
|
||||
import kotlin.script.experimental.dependencies.ScriptDependencies
|
||||
|
||||
abstract class ScriptDependenciesLoader(protected val project: Project) {
|
||||
|
||||
@@ -86,6 +87,10 @@ abstract class ScriptDependenciesLoader(protected val project: Project) {
|
||||
}
|
||||
|
||||
val dependencies = result.dependencies?.adjustByDefinition(scriptDef) ?: return
|
||||
saveToCache(file, dependencies)
|
||||
}
|
||||
|
||||
protected fun saveToCache(file: VirtualFile, dependencies: ScriptDependencies) {
|
||||
val rootsChanged = cache.hasNotCachedRoots(dependencies)
|
||||
if (cache.save(file, dependencies)) {
|
||||
file.scriptDependencies = dependencies
|
||||
|
||||
Reference in New Issue
Block a user