diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java b/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java index b5893cc..167701c 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java @@ -2,7 +2,9 @@ package io.github.linwancen.plugin.show.java; import com.intellij.json.psi.JsonProperty; import com.intellij.json.psi.JsonStringLiteral; +import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.progress.ProcessCanceledException; +import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.patterns.PlatformPatterns; @@ -59,15 +61,17 @@ public class JsonJumpJava extends PsiReferenceContributor { @NotNull Project project = element.getProject(); @NotNull List psiFields = new ArrayList<>(); @NotNull List tips = new ArrayList<>(); - @NotNull PsiClass[] psiClasses = PsiClassUtils.fileToClasses(virtualFile, project); - @NotNull List jsonPath = jsonPath(jsonProp); - put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1); + return DumbService.getInstance(project).runReadActionInSmartMode(() -> ReadAction.compute(() -> { + @NotNull PsiClass[] psiClasses = PsiClassUtils.fileToClasses(virtualFile, project); + @NotNull List jsonPath = jsonPath(jsonProp); + put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1); - @NotNull List list = new ArrayList<>(); - for (@NotNull PsiField psiField : psiFields) { - list.add(new JsonRef<>(element, psiField, tips)); - } - return list.toArray(PsiReference.EMPTY_ARRAY); + @NotNull List list = new ArrayList<>(); + for (@NotNull PsiField psiField : psiFields) { + list.add(new JsonRef<>(element, psiField, tips)); + } + return list; + })).toArray(PsiReference.EMPTY_ARRAY); } catch (ProcessCanceledException ignored) { return PsiReference.EMPTY_ARRAY; } catch (Throwable e) {