mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
encapsulate TextEditorBackgroundHighlighter.getPasses, since it's dangerous and very implicit-contract-demanding
GitOrigin-RevId: cefb97e5a7798ad50e7bcc33da048f5e0e580ba3
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3433a23e80
commit
9441e756d3
@@ -873,7 +873,6 @@ f:com.intellij.codeInsight.daemon.impl.TextEditorBackgroundHighlighter
|
||||
- com.intellij.codeHighlighting.BackgroundEditorHighlighter
|
||||
- <init>(com.intellij.openapi.project.Project,com.intellij.openapi.editor.Editor):V
|
||||
- createPassesForEditor():com.intellij.codeHighlighting.TextEditorHighlightingPass[]
|
||||
- f:getPasses(I[]):java.util.List
|
||||
f:com.intellij.codeInsight.daemon.impl.TextEditorHighlightingPassRegistrarImpl
|
||||
- com.intellij.codeHighlighting.TextEditorHighlightingPassRegistrar
|
||||
- sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName
|
||||
|
||||
@@ -5,7 +5,9 @@ import com.intellij.codeHighlighting.BackgroundEditorHighlighter
|
||||
import com.intellij.codeHighlighting.Pass
|
||||
import com.intellij.codeHighlighting.TextEditorHighlightingPass
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
|
||||
import com.intellij.codeInspection.ex.GlobalInspectionContextBase
|
||||
import com.intellij.diagnostic.StartUpMeasurer
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.progress.ProcessCanceledException
|
||||
@@ -16,7 +18,7 @@ import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.impl.PsiDocumentManagerBase
|
||||
import com.intellij.psi.impl.PsiFileEx
|
||||
import com.intellij.util.ArrayUtilRt
|
||||
import com.intellij.util.ArrayUtil
|
||||
import com.intellij.util.containers.toArray
|
||||
import java.util.concurrent.CancellationException
|
||||
|
||||
@@ -36,7 +38,7 @@ class TextEditorBackgroundHighlighter(private val project: Project, private val
|
||||
return file
|
||||
}
|
||||
|
||||
fun getPasses(passesToIgnore: IntArray): List<TextEditorHighlightingPass> {
|
||||
private fun createPasses(): List<TextEditorHighlightingPass> {
|
||||
if (project.isDisposed()) {
|
||||
return emptyList()
|
||||
}
|
||||
@@ -48,14 +50,17 @@ class TextEditorBackgroundHighlighter(private val project: Project, private val
|
||||
|
||||
var file = renewFile() ?: return emptyList()
|
||||
|
||||
var effectivePassesToIgnore = passesToIgnore
|
||||
val effectivePassesToIgnore =
|
||||
if (file is PsiCompiledFile) {
|
||||
file = file.getDecompiledPsiFile()
|
||||
effectivePassesToIgnore = IGNORE_FOR_COMPILED
|
||||
IGNORE_FOR_COMPILED
|
||||
}
|
||||
else if (!DaemonCodeAnalyzer.getInstance(project).isHighlightingAvailable(file)) {
|
||||
return emptyList()
|
||||
}
|
||||
else {
|
||||
ArrayUtil.EMPTY_INT_ARRAY
|
||||
}
|
||||
|
||||
HighlightingPassTracer.HIGHLIGHTING_PASS_TRACER.spanBuilder("passes instantiation").use { span ->
|
||||
val startupActivity = StartUpMeasurer.startActivity("highlighting passes instantiation")
|
||||
@@ -81,7 +86,9 @@ class TextEditorBackgroundHighlighter(private val project: Project, private val
|
||||
}
|
||||
|
||||
override fun createPassesForEditor(): Array<TextEditorHighlightingPass> {
|
||||
val passes = getPasses(ArrayUtilRt.EMPTY_INT_ARRAY)
|
||||
ApplicationManager.getApplication().assertIsNonDispatchThread()
|
||||
GlobalInspectionContextBase.assertUnderDaemonProgress()
|
||||
val passes = createPasses()
|
||||
return if (passes.isEmpty()) TextEditorHighlightingPass.EMPTY_ARRAY else passes.toArray(TextEditorHighlightingPass.EMPTY_ARRAY)
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.intellij.codeInsight.daemon.impl;
|
||||
|
||||
import com.intellij.codeHighlighting.*;
|
||||
import com.intellij.codeInsight.daemon.ProblemHighlightFilter;
|
||||
import com.intellij.codeInspection.ex.GlobalInspectionContextBase;
|
||||
import com.intellij.codeWithMe.ClientId;
|
||||
import com.intellij.openapi.application.AccessToken;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
@@ -161,6 +162,7 @@ public final class TextEditorHighlightingPassRegistrarImpl extends TextEditorHig
|
||||
@NotNull Editor editor,
|
||||
int @NotNull [] passesToIgnore) {
|
||||
ApplicationManager.getApplication().assertIsNonDispatchThread();
|
||||
GlobalInspectionContextBase.assertUnderDaemonProgress();
|
||||
PsiDocumentManager documentManager = PsiDocumentManager.getInstance(myProject);
|
||||
Document document = editor.getDocument();
|
||||
PsiFile fileFromDoc = documentManager.getPsiFile(document);
|
||||
|
||||
@@ -1274,9 +1274,10 @@ public final class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx
|
||||
}
|
||||
session.additionalSetupFromBackground(psiFile);
|
||||
try (AccessToken ignored = ClientId.withClientId(ClientFileEditorManager.getClientId(fileEditor))) {
|
||||
HighlightingPass[] r = backgroundEditorHighlighter instanceof TextEditorBackgroundHighlighter textHighlighter ?
|
||||
textHighlighter.getPasses(passesToIgnore).toArray(HighlightingPass.EMPTY_ARRAY) :
|
||||
backgroundEditorHighlighter.createPassesForEditor();
|
||||
HighlightingPass[] r = backgroundEditorHighlighter.createPassesForEditor();
|
||||
if (passesToIgnore.length != 0) {
|
||||
r = ContainerUtil.findAllAsArray(r, pass->!(pass instanceof TextEditorHighlightingPass te) || ArrayUtil.indexOf(passesToIgnore, te.getId()) == -1);
|
||||
}
|
||||
if (heavyProcessIsRunning) {
|
||||
r = ContainerUtil.findAllAsArray(r, o -> DumbService.isDumbAware(o));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user