diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java index e3cdb712de0c..1563f90cb3f1 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java @@ -47,6 +47,7 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings myCompoundLibMap = new HashMap(); private CompoundLibrary myProjectLibs = new CompoundLibrary(); + private Set myProjectLibFiles; public ScriptingLibraryMappings(final Project project, final LibraryType libraryType) { super(project); @@ -95,6 +96,7 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings mappings) { super.setMappings(mappings); updateDependencies(mappings); + updateProjectLibraryFiles(); } private static boolean dependencyExists(ModuleRootManager rootManager, Library library) { @@ -171,6 +173,7 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings(); + for (CompoundLibrary container : myCompoundLibMap.values()) { + for (ScriptingLibraryTable.LibraryModel libModel : container.getLibraries()) { + myProjectLibFiles.addAll(Arrays.asList(libModel.getSourceFiles())); + myProjectLibFiles.addAll(Arrays.asList(libModel.getCompactFiles())); + } + } + for (ScriptingLibraryTable.LibraryModel libModel : myProjectLibs.getLibraries()) { + myProjectLibFiles.addAll(Arrays.asList(libModel.getSourceFiles())); + myProjectLibFiles.addAll(Arrays.asList(libModel.getCompactFiles())); + } + } + + public Set getProjectLibraryFiles() { + if (myProjectLibFiles == null) { + updateProjectLibraryFiles(); + } + return myProjectLibFiles; + } + + } diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibrariesScope.java b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibrariesScope.java index 75d549c0dcbc..3775379d474f 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibrariesScope.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibrariesScope.java @@ -30,7 +30,7 @@ public class ScriptingLibrariesScope extends GlobalSearchScope { private GlobalSearchScope myBaseScope; private ScriptingIndexableSetContributor myContributor; - private Set myLibraryFiles; + protected Set myLibraryFiles; public ScriptingLibrariesScope(GlobalSearchScope baseScope, Class providerClass) { super(baseScope.getProject()); @@ -38,21 +38,16 @@ public class ScriptingLibrariesScope extends GlobalSearchScope { IndexableSetContributor contributor = IndexableSetContributor.EP_NAME.findExtension(providerClass); if (contributor instanceof ScriptingIndexableSetContributor) { myContributor = (ScriptingIndexableSetContributor)contributor; - updateLibraryFiles(); + setLibraryFiles(); } } - public void updateLibraryFiles() { + public void setLibraryFiles() { myLibraryFiles = myContributor.getLibraryFiles(myBaseScope.getProject()); } public boolean contains(VirtualFile file) { - return myBaseScope.contains(file) | contributorContains(file); - } - - private boolean contributorContains(VirtualFile file) { - if (myContributor == null) return false; - return myLibraryFiles.contains(file); + return myBaseScope.contains(file) | (myLibraryFiles == null ? false : myLibraryFiles.contains(file)); } @Override