mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
[pycharm] introduce cleanAllFileLevelInspections to get rid of getting psi files on EDT for nothing
GitOrigin-RevId: 28acc147cf396d63d27338ce15cab1a6fdfe4a32
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d72eba89a1
commit
aca9d92e9d
@@ -89,6 +89,14 @@ public abstract class DaemonCodeAnalyzerEx extends DaemonCodeAnalyzer {
|
||||
@ApiStatus.Internal
|
||||
public abstract void cleanFileLevelHighlights(int group, @NotNull PsiFile psiFile);
|
||||
|
||||
|
||||
/**
|
||||
* Do not use because manual management of highlights is dangerous and may lead to unexpected flicking/disappearing/stuck highlighters.
|
||||
* Instead, generate file-level infos in your inspection/annotator, and they will be removed automatically when outdated
|
||||
*/
|
||||
@ApiStatus.Internal
|
||||
public abstract void cleanAllFileLevelHighlights(int group);
|
||||
|
||||
@ApiStatus.Internal
|
||||
public abstract boolean hasFileLevelHighlights(int group, @NotNull PsiFile psiFile);
|
||||
|
||||
|
||||
@@ -246,6 +246,14 @@ public final class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanAllFileLevelHighlights(int group) {
|
||||
ThreadingAssertions.assertEventDispatchThread();
|
||||
for (FileEditor fileEditor : getFileEditorManager().getAllEditors()) {
|
||||
cleanFileLevelHighlights(fileEditor, group);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasFileLevelHighlights(int group, @NotNull PsiFile psiFile) {
|
||||
ApplicationManager.getApplication().assertReadAccessAllowed();
|
||||
|
||||
@@ -2340,7 +2340,7 @@ public final class PyTypingTypeProvider extends PyTypeProviderWithCustomContext<
|
||||
public Stack<PyQualifiedNameOwner> getTypeAliasStack() {
|
||||
return myTypeAliasStack;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
@@ -64,8 +64,8 @@ import com.jetbrains.python.sdk.flavors.VirtualEnvSdkFlavor
|
||||
import com.jetbrains.python.sdk.flavors.conda.CondaEnvSdkFlavor
|
||||
import com.jetbrains.python.target.PyTargetAwareAdditionalData
|
||||
import com.jetbrains.python.ui.PyUiUtil
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.nio.file.Files
|
||||
@@ -320,7 +320,9 @@ var Module.pythonSdk: Sdk?
|
||||
set(value) {
|
||||
thisLogger().info("Setting PythonSDK $value to module $this")
|
||||
ModuleRootModificationUtil.setModuleSdk(this, value)
|
||||
PyUiUtil.clearFileLevelInspectionResults(project)
|
||||
runInEdt {
|
||||
PyUiUtil.clearFileLevelInspectionResults(project)
|
||||
}
|
||||
}
|
||||
|
||||
var Project.pythonSdk: Sdk?
|
||||
|
||||
@@ -4,13 +4,11 @@ package com.jetbrains.python.ui;
|
||||
import com.intellij.codeHighlighting.Pass;
|
||||
import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.EditorFactory;
|
||||
import com.intellij.openapi.editor.ex.EditorEx;
|
||||
import com.intellij.openapi.editor.highlighter.EditorHighlighter;
|
||||
import com.intellij.openapi.editor.highlighter.EditorHighlighterFactory;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.ui.popup.Balloon;
|
||||
@@ -18,9 +16,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.util.NlsContexts.PopupContent;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.WindowManager;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -73,15 +69,6 @@ public final class PyUiUtil {
|
||||
}
|
||||
|
||||
public static void clearFileLevelInspectionResults(@NotNull Project project) {
|
||||
final DaemonCodeAnalyzerEx codeAnalyzer = DaemonCodeAnalyzerEx.getInstanceEx(project);
|
||||
final PsiManager psiManager = PsiManager.getInstance(project);
|
||||
StreamEx.of(FileEditorManager.getInstance(project).getAllEditors())
|
||||
.map(editor -> editor.getFile())
|
||||
.nonNull()
|
||||
.map(file -> ReadAction.compute(() -> psiManager.findFile(file)))
|
||||
.nonNull()
|
||||
.forEach(file -> {
|
||||
codeAnalyzer.cleanFileLevelHighlights(Pass.LOCAL_INSPECTIONS, file);
|
||||
});
|
||||
DaemonCodeAnalyzerEx.getInstanceEx(project).cleanAllFileLevelHighlights(Pass.LOCAL_INSPECTIONS);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user