index scratch roots

This commit is contained in:
Gregory.Shrago
2016-07-12 19:54:49 +03:00
parent 316af6285d
commit 06ed3f5f2a
2 changed files with 25 additions and 3 deletions
@@ -52,6 +52,7 @@ import com.intellij.psi.util.PsiUtilCore;
import com.intellij.util.PairConsumer;
import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.indexing.IndexableSetContributor;
import com.intellij.util.messages.MessageBus;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -59,9 +60,7 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.*;
@State(name = "ScratchFileService", storages = @Storage("scratches.xml"))
@@ -314,4 +313,26 @@ public class ScratchFileServiceImpl extends ScratchFileService implements Persis
private static Language getLanguageByFileName(@Nullable VirtualFile file) {
return file == null ? null : LanguageUtil.getFileTypeLanguage(FileTypeManager.getInstance().getFileTypeByFileName(file.getName()));
}
public static class IndexSetContributor extends IndexableSetContributor {
@NotNull
@Override
public Set<VirtualFile> getAdditionalRootsToIndex() {
ScratchFileService instance = ScratchFileService.getInstance();
LocalFileSystem fileSystem = LocalFileSystem.getInstance();
HashSet<VirtualFile> result = ContainerUtil.newHashSet();
for (RootType rootType : RootType.getAllRootIds()) {
if (rootType.isHidden()) continue;
ContainerUtil.addIfNotNull(result, fileSystem.findFileByPath(instance.getRootPath(rootType)));
}
return result;
}
@NotNull
@Override
public Set<VirtualFile> getAdditionalProjectRootsToIndex(@NotNull Project project) {
return Collections.emptySet();
}
}
}
@@ -359,6 +359,7 @@
<fileIconProvider implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$FilePresentation"/>
<editorTabTitleProvider implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$FilePresentation"/>
<syntaxHighlighter factoryClass="com.intellij.ide.scratch.ScratchFileServiceImpl$Highlighter" order="first"/>
<indexedRootsProvider implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$IndexSetContributor"/>
<scratch.rootType implementation="com.intellij.ide.scratch.ScratchRootType" />
<scratch.rootType implementation="com.intellij.execution.console.HistoryRootType"/>