From 584b1110596bf976f4e243afc3a23a9d34e966db Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 26 Jun 2014 09:43:41 +0200 Subject: [PATCH] IDEA-126598 Find in open files does not find occurrences in files outside of project --- .../intellij/psi/search/GlobalSearchScopes.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java b/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java index 3acfe338d499..eb194e59b6eb 100644 --- a/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java +++ b/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java @@ -18,9 +18,12 @@ package com.intellij.psi.search; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiManager; import org.jetbrains.annotations.NotNull; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; /** * @author yole @@ -30,8 +33,15 @@ public class GlobalSearchScopes extends GlobalSearchScopesCore { } @NotNull - public static GlobalSearchScope openFilesScope(@NotNull Project project) { + public static SearchScope openFilesScope(@NotNull Project project) { final VirtualFile[] files = FileEditorManager.getInstance(project).getOpenFiles(); - return GlobalSearchScope.filesScope(project, Arrays.asList(files), "Open Files"); + // We can not use GlobalSearchScope as it is usually bound to project and used via filtering of project / library roots + // Open files can be out of project roots e.g. arbitrary open file so we go LocalSearchScope way, filled with elements to process + List psiFiles = new ArrayList(files.length); + PsiManager psiManager = PsiManager.getInstance(project); + for(VirtualFile file:files) { + psiFiles.add(psiManager.findFile(file)); + } + return new LocalSearchScope(psiFiles.toArray(new PsiElement[psiFiles.size()]), "Open Files"); } }