fix: virtualFile.isValid()

This commit is contained in:
林万程
2025-12-02 07:17:55 +08:00
parent c2a5e26b36
commit fa0c17e992
9 changed files with 19 additions and 9 deletions

View File

@@ -7,7 +7,14 @@ import com.intellij.ide.projectView.impl.nodes.PsiFieldNode;
import com.intellij.ide.projectView.impl.nodes.PsiFileNode;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.JavaDirectoryService;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaCodeReferenceElement;
import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiPackage;
import com.intellij.psi.PsiType;
import com.intellij.psi.impl.source.PsiClassReferenceType;
import com.intellij.psi.javadoc.PsiDocComment;
import io.github.linwancen.plugin.show.bean.SettingsInfo;
@@ -68,7 +75,7 @@ public class JavaTree {
// On Packages View, Project Files View
@Nullable VirtualFile virtualFile = node.getVirtualFile();
if (virtualFile == null || !virtualFile.isDirectory()) {
if (virtualFile == null || !virtualFile.isValid() || !virtualFile.isDirectory()) {
return null;
}
@Nullable PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(virtualFile);

View File

@@ -53,6 +53,9 @@ public class FileInfo extends SettingsInfo {
return null;
}
@NotNull VirtualFile file = viewProvider.getVirtualFile();
if (!file.isValid()) {
return null;
}
@NotNull Project project = psiFile.getProject();
return new FileInfo(file, document, project, FuncEnum.LINE);
}

View File

@@ -20,7 +20,7 @@ public class CacheUpdateEditorListener implements FileEditorManagerListener {
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
@NotNull Project project = event.getManager().getProject();
@Nullable VirtualFile file = event.getNewFile();
if (file == null) {
if (file == null || !file.isValid()) {
return;
}
ApplicationManager.getApplication().executeOnPooledThread(() -> {

View File

@@ -16,7 +16,7 @@ public class TreeExt {
public static @Nullable String doc(@NotNull ProjectViewNode<?> node) {
@Nullable VirtualFile file = node.getVirtualFile();
if (file == null) {
if (file == null || !file.isValid()) {
return null;
}
return TreeExt.extDoc(file);

View File

@@ -36,7 +36,7 @@ public class FileOptListener implements BulkFileListener {
private static void forEvent(@NotNull VFileEvent event) {
@NotNull List<FileLoader> list = FileLoader.EPN.getExtensionList();
@Nullable VirtualFile file = event.getFile();
if (file == null) {
if (file == null || !file.isValid() || file.isDirectory()) {
return;
}
if (event instanceof VFileMoveEvent) {

View File

@@ -23,7 +23,7 @@ public class FileSelectChangeListener implements FileEditorManagerListener {
return;
}
@Nullable VirtualFile file = event.getOldFile();
if (file == null) {
if (file == null || !file.isValid()) {
return;
}
if (file.exists()) {

View File

@@ -43,7 +43,7 @@ public class JsLangDoc extends BaseLangDoc {
public @Nullable <T extends SettingsInfo> String treeDoc(@NotNull T info, @NotNull ProjectViewNode<?> node,
@NotNull Project project) {
@Nullable VirtualFile virtualFile = node.getVirtualFile();
if (virtualFile == null) {
if (virtualFile == null || !virtualFile.isValid()) {
return null;
}
@Nullable PsiFile psiFile = PsiManager.getInstance(project).findFile(virtualFile);

View File

@@ -43,7 +43,7 @@ public class PhpLangDoc extends BaseTagLangDoc<PhpDocComment> {
Object value = node.getValue();
if (value instanceof PsiElement) {
@NotNull PsiElement psiElement = (PsiElement) value;
if (psiElement.getLanguage() == PhpLanguage.INSTANCE) {
if (psiElement.isValid() && psiElement.getLanguage() == PhpLanguage.INSTANCE) {
@NotNull PsiElement[] children = psiElement.getChildren();
for (PsiElement child : children) {
@Nullable PsiComment comment = PsiTreeUtil.getChildOfType(child, PsiComment.class);

View File

@@ -27,7 +27,7 @@ public class FirstDoc {
return null;
}
@Nullable VirtualFile virtualFile = node.getVirtualFile();
if (virtualFile == null || virtualFile.isDirectory()) {
if (virtualFile == null || !virtualFile.isValid() || virtualFile.isDirectory()) {
return null;
}
Project project = node.getProject();