From d7270295f177a710c70902cfbc49e203b2830e7a Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 25 Jun 2015 15:37:18 +0200 Subject: [PATCH] IDEA-134148 Navigate to... File (ctlr-shift-n) show project files in .idea directory --- .../navigation/ChooseByNameTest.groovy | 7 +++++++ .../DefaultFileNavigationContributor.java | 19 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy b/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy index d91654d2394f..b7ebc9496583 100644 --- a/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy +++ b/java/java-tests/testSrc/com/intellij/navigation/ChooseByNameTest.groovy @@ -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") diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultFileNavigationContributor.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultFileNavigationContributor.java index bbff1ac646f6..7eddeaf597b3 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultFileNavigationContributor.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/DefaultFileNavigationContributor.java @@ -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 processor, + @NotNull final Processor _processor, @NotNull FindSymbolParameters parameters) { + final boolean globalSearch = parameters.getSearchScope().isSearchInLibraries(); + final Processor processor = new Processor() { + @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("\\");