mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
AnalysisActions should not traverse files under selection in update (IDEA-126494)
This commit is contained in:
committed by
Anna Kozlova
parent
d7440f731c
commit
f30e993603
@@ -38,6 +38,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileFilter;
|
||||
import com.intellij.openapi.vfs.VirtualFileVisitor;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.GlobalSearchScopesCore;
|
||||
@@ -239,6 +240,29 @@ public class AnalysisScope {
|
||||
myFilesSet = new HashSet<VirtualFile>();
|
||||
accept(createFileSearcher());
|
||||
}
|
||||
else if (myType == VIRTUAL_FILES) {
|
||||
final HashSet<VirtualFile> files = new HashSet<VirtualFile>();
|
||||
final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(myProject).getFileIndex();
|
||||
for (Iterator<VirtualFile> iterator = myFilesSet.iterator(); iterator.hasNext(); ) {
|
||||
final VirtualFile vFile = iterator.next();
|
||||
VfsUtilCore.visitChildrenRecursively(vFile, new VirtualFileVisitor() {
|
||||
@NotNull
|
||||
@Override
|
||||
public Result visitFileEx(@NotNull VirtualFile file) {
|
||||
boolean ignored = fileIndex.isIgnored(file);
|
||||
if (!ignored && !file.isDirectory()) {
|
||||
files.add(file);
|
||||
}
|
||||
return ignored ? SKIP_CHILDREN : CONTINUE;
|
||||
}
|
||||
});
|
||||
|
||||
if (vFile.isDirectory()) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
myFilesSet.addAll(files);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.intellij.analysis;
|
||||
|
||||
import com.intellij.ide.highlighter.ArchiveFileType;
|
||||
import com.intellij.injected.editor.VirtualFileWindow;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
@@ -29,9 +28,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.JarFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileVisitor;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
@@ -177,11 +174,7 @@ public abstract class BaseAnalysisAction extends AnAction {
|
||||
Set<VirtualFile> files = new HashSet<VirtualFile>();
|
||||
for (VirtualFile vFile : virtualFiles) {
|
||||
if (fileIndex.isInContent(vFile)) {
|
||||
if (vFile instanceof VirtualFileWindow) {
|
||||
files.add(vFile);
|
||||
vFile = ((VirtualFileWindow)vFile).getDelegate();
|
||||
}
|
||||
collectFilesUnder(vFile, files);
|
||||
files.add(vFile);
|
||||
}
|
||||
}
|
||||
return new AnalysisScope(project, files);
|
||||
@@ -208,15 +201,4 @@ public abstract class BaseAnalysisAction extends AnAction {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void collectFilesUnder(@NotNull VirtualFile vFile, @NotNull final Set<VirtualFile> files) {
|
||||
VfsUtilCore.visitChildrenRecursively(vFile, new VirtualFileVisitor() {
|
||||
@Override
|
||||
public boolean visitFile(@NotNull VirtualFile file) {
|
||||
if (!file.isDirectory()) {
|
||||
files.add(file);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user