Disable highlighting for decompiled Kotlin files (KT-27284)
#KT-27284 Fixed
This commit is contained in:
+2
@@ -9,12 +9,14 @@ import com.intellij.codeInsight.daemon.impl.analysis.DefaultHighlightingSettingP
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.FileHighlightingSetting
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import org.jetbrains.kotlin.idea.internal.isKotlinDecompiledFile
|
||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
|
||||
class KotlinDefaultHighlightingSettingsProvider : DefaultHighlightingSettingProvider() {
|
||||
override fun getDefaultSetting(project: Project, file: VirtualFile): FileHighlightingSetting? {
|
||||
return when {
|
||||
ProjectRootsUtil.isLibraryFile(project, file) -> FileHighlightingSetting.SKIP_INSPECTION
|
||||
file.isKotlinDecompiledFile -> FileHighlightingSetting.SKIP_HIGHLIGHTING
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.progress.Task
|
||||
import com.intellij.openapi.ui.Messages
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
@@ -18,6 +19,7 @@ import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.intellij.openapi.vfs.ex.dummy.DummyFileSystem
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
|
||||
|
||||
fun showDecompiledCode(sourceFile: KtFile) {
|
||||
ProgressManager.getInstance().run(KotlinBytecodeDecompilerTask(sourceFile))
|
||||
@@ -44,11 +46,13 @@ class KotlinBytecodeDecompilerTask(val file: KtFile) : Task.Backgroundable(file.
|
||||
return@runWriteAction
|
||||
}
|
||||
|
||||
val root = getOrCreateDummyRoot()
|
||||
val root: VirtualFile = getOrCreateDummyRoot()
|
||||
val decompiledFileName = FileUtil.getNameWithoutExtension(file.name) + ".decompiled.java"
|
||||
val result = DummyFileSystem.getInstance().createChildFile(null, root, decompiledFileName)
|
||||
VfsUtil.saveText(result, decompiledText)
|
||||
|
||||
result.isKotlinDecompiledFile = true
|
||||
|
||||
OpenFileDescriptor(file.project, result).navigate(true)
|
||||
}
|
||||
}
|
||||
@@ -58,6 +62,8 @@ class KotlinBytecodeDecompilerTask(val file: KtFile) : Task.Backgroundable(file.
|
||||
val KOTLIN_DECOMPILED_FOLDER = "kotlinDecompiled"
|
||||
val KOTLIN_DECOMPILED_ROOT = "dummy://$KOTLIN_DECOMPILED_FOLDER"
|
||||
|
||||
var VirtualFile.isKotlinDecompiledFile: Boolean by NotNullableUserDataProperty(Key.create("IS_KOTLIN_DECOMPILED_FILE"), false)
|
||||
|
||||
fun getOrCreateDummyRoot(): VirtualFile =
|
||||
VirtualFileManager.getInstance().refreshAndFindFileByUrl(KOTLIN_DECOMPILED_ROOT) ?:
|
||||
DummyFileSystem.getInstance().createRoot(KOTLIN_DECOMPILED_FOLDER)
|
||||
|
||||
Reference in New Issue
Block a user