feat(extDoc): Load xxx.tree/key/doc/json.tsv when projectOpened -> exitDumbMode
This commit is contained in:
@@ -1,34 +1,42 @@
|
||||
package io.github.linwancen.plugin.show.ext.conf.listener;
|
||||
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.project.ProjectManagerListener;
|
||||
import io.github.linwancen.plugin.show.ext.conf.ConfCache;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* call ConfCache.loadAll
|
||||
*/
|
||||
public class ConfFileInitListener implements ProjectManagerListener {
|
||||
public class ConfFileInitListener implements DumbService.DumbModeListener, ProjectManagerListener {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(ConfFileInitListener.class);
|
||||
private static final Map<Project, Boolean> PROJECT_LOAD_MAP = new ConcurrentHashMap<>() {};
|
||||
|
||||
@Override
|
||||
public void projectOpened(@NotNull Project project) {
|
||||
public void exitDumbMode() {
|
||||
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;
|
||||
@NotNull Project[] projects = ProjectManager.getInstance().getOpenProjects();
|
||||
for (Project project : projects) {
|
||||
PROJECT_LOAD_MAP.computeIfAbsent(project, k -> {
|
||||
ConfCache.loadAll(project);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
ConfCache.loadAll(project);
|
||||
} catch (Throwable e) {
|
||||
LOG.info("ConfFileInitListener catch Throwable but log to record.", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void projectClosed(@NotNull Project project) {
|
||||
PROJECT_LOAD_MAP.remove(project);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,6 +153,8 @@ Show doc comment in the Project view Tree, line End, json, other
|
||||
<projectListeners>
|
||||
<listener class="io.github.linwancen.plugin.show.ext.conf.listener.ConfFileInitListener"
|
||||
topic="com.intellij.openapi.project.ProjectManagerListener"/>
|
||||
<listener class="io.github.linwancen.plugin.show.ext.conf.listener.ConfFileInitListener"
|
||||
topic="com.intellij.openapi.project.DumbService$DumbModeListener"/>
|
||||
<listener class="io.github.linwancen.plugin.show.cache.CacheUpdateProjectListener"
|
||||
topic="com.intellij.openapi.project.ProjectManagerListener"/>
|
||||
</projectListeners>
|
||||
|
||||
Reference in New Issue
Block a user