From 8788447aa04bc90b53aa5926a055e5c82541a4e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com> Date: Mon, 9 Sep 2024 23:37:56 +0800 Subject: [PATCH] fix(ConfFileInitListener): loop when projectOpened --- .../show/ext/conf/listener/ConfFileInitListener.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/io/github/linwancen/plugin/show/ext/conf/listener/ConfFileInitListener.java b/src/main/java/io/github/linwancen/plugin/show/ext/conf/listener/ConfFileInitListener.java index dfd9a16..60c7905 100644 --- a/src/main/java/io/github/linwancen/plugin/show/ext/conf/listener/ConfFileInitListener.java +++ b/src/main/java/io/github/linwancen/plugin/show/ext/conf/listener/ConfFileInitListener.java @@ -7,6 +7,8 @@ import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Arrays; + /** * call ConfCache.loadAll */ @@ -17,6 +19,13 @@ public class ConfFileInitListener implements ProjectManagerListener { @Override public void projectOpened(@NotNull Project project) { try { + StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); + boolean isInLoadAll = Arrays.stream(stackTrace).anyMatch(stack -> + stack.getMethodName().equals("loadAll") + && stack.getClassName().equals(ConfCache.class.getName())); + if (isInLoadAll) { + return; + } ConfCache.loadAll(project); } catch (Throwable e) { LOG.info("ConfFileInitListener catch Throwable but log to record.", e);