IDEA-134148 Navigate to... File (ctlr-shift-n) show project files in .idea directory

This commit is contained in:
peter
2015-06-25 17:40:22 +02:00
parent 508c2a0b7a
commit d7270295f1
2 changed files with 23 additions and 3 deletions
@@ -119,6 +119,13 @@ class Intf {
assert elements == [m, mod]
}
public void "test consider dot-idea files out of project"() {
def outside = myFixture.addFileToProject(".idea/workspace.xml", "")
def inside = myFixture.addFileToProject("workspace.txt", "")
assert getPopupElements(new GotoFileModel(project), "work", false) == [inside]
assert getPopupElements(new GotoFileModel(project), "work", true) == [inside, outside]
}
public void "test prefer better path matches"() {
def fooIndex = myFixture.addFileToProject("foo/index.html", "foo")
def fooBarIndex = myFixture.addFileToProject("foo/bar/index.html", "foo bar")
@@ -16,16 +16,18 @@
package com.intellij.ide.util.gotoByName;
import com.intellij.navigation.ChooseByNameContributorEx;
import com.intellij.util.CommonProcessors;
import com.intellij.util.indexing.FindSymbolParameters;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
import com.intellij.psi.PsiFileSystemItem;
import com.intellij.psi.search.FilenameIndex;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.ArrayUtil;
import com.intellij.util.CommonProcessors;
import com.intellij.util.Processor;
import com.intellij.util.indexing.FileBasedIndex;
import com.intellij.util.indexing.FindSymbolParameters;
import com.intellij.util.indexing.IdFilter;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
@@ -79,8 +81,19 @@ public class DefaultFileNavigationContributor implements ChooseByNameContributor
@Override
public void processElementsWithName(@NotNull String name,
@NotNull Processor<NavigationItem> processor,
@NotNull final Processor<NavigationItem> _processor,
@NotNull FindSymbolParameters parameters) {
final boolean globalSearch = parameters.getSearchScope().isSearchInLibraries();
final Processor<PsiFileSystemItem> processor = new Processor<PsiFileSystemItem>() {
@Override
public boolean process(PsiFileSystemItem item) {
if (!globalSearch && ProjectUtil.isProjectOrWorkspaceFile(item.getVirtualFile())) {
return true;
}
return _processor.process(item);
}
};
String completePattern = parameters.getCompletePattern();
final boolean includeDirs = completePattern.endsWith("/") || completePattern.endsWith("\\") ||
completePattern.startsWith("/") || completePattern.startsWith("\\");