diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/JavaTree.java b/src/main/idea/io/github/linwancen/plugin/show/java/JavaTree.java index 1c7d246..9645dfa 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/JavaTree.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/JavaTree.java @@ -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); diff --git a/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java b/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java index 1ef5424..0e1987c 100644 --- a/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java +++ b/src/main/java/io/github/linwancen/plugin/show/bean/FileInfo.java @@ -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); } diff --git a/src/main/java/io/github/linwancen/plugin/show/cache/CacheUpdateEditorListener.java b/src/main/java/io/github/linwancen/plugin/show/cache/CacheUpdateEditorListener.java index e59850a..d78d00e 100644 --- a/src/main/java/io/github/linwancen/plugin/show/cache/CacheUpdateEditorListener.java +++ b/src/main/java/io/github/linwancen/plugin/show/cache/CacheUpdateEditorListener.java @@ -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(() -> { diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/TreeExt.java b/src/main/java/io/github/linwancen/plugin/show/ext/TreeExt.java index 795de97..3ce015d 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/TreeExt.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/TreeExt.java @@ -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); diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileOptListener.java b/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileOptListener.java index c0e6c2e..1ea2f8d 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileOptListener.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileOptListener.java @@ -36,7 +36,7 @@ public class FileOptListener implements BulkFileListener { private static void forEvent(@NotNull VFileEvent event) { @NotNull List list = FileLoader.EPN.getExtensionList(); @Nullable VirtualFile file = event.getFile(); - if (file == null) { + if (file == null || !file.isValid() || file.isDirectory()) { return; } if (event instanceof VFileMoveEvent) { diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileSelectChangeListener.java b/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileSelectChangeListener.java index 3e7fd0c..49e6574 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileSelectChangeListener.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/listener/FileSelectChangeListener.java @@ -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()) { diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java index ef20359..be02c01 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/JsLangDoc.java @@ -43,7 +43,7 @@ public class JsLangDoc extends BaseLangDoc { public @Nullable 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); diff --git a/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java b/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java index 4f9a646..659f5e2 100644 --- a/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/lang/PhpLangDoc.java @@ -43,7 +43,7 @@ public class PhpLangDoc extends BaseTagLangDoc { 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); diff --git a/src/main/java/io/github/linwancen/plugin/show/tree/first/FirstDoc.java b/src/main/java/io/github/linwancen/plugin/show/tree/first/FirstDoc.java index 1360954..6d29b96 100644 --- a/src/main/java/io/github/linwancen/plugin/show/tree/first/FirstDoc.java +++ b/src/main/java/io/github/linwancen/plugin/show/tree/first/FirstDoc.java @@ -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();