Improve finding module file

This commit is contained in:
Rik van der Kleij 2019-10-09 21:18:10 +02:00
parent cd122ba5ef
commit 0ad6468379
2 changed files with 6 additions and 11 deletions

View File

@ -110,17 +110,12 @@ object HaskellProjectUtil {
directory.listFiles.find(_.getName == "package.yaml") directory.listFiles.find(_.getName == "package.yaml")
} }
def getProjectAndLibrariesModulesSearchScope(project: Project): GlobalSearchScope = { def getProjectSearchScope(project: Project): GlobalSearchScope = {
val projectModules = findProjectHaskellModules(project).map(m => GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(m, true)) GlobalSearchScope.allScope(project)
if (projectModules.isEmpty) {
GlobalSearchScope.EMPTY_SCOPE
} else {
projectModules.reduce(_.uniteWith(_))
}
} }
def getSearchScope(project: Project, includeNonProjectItems: Boolean): GlobalSearchScope = { def getSearchScope(project: Project, includeNonProjectItems: Boolean): GlobalSearchScope = {
if (includeNonProjectItems) getProjectAndLibrariesModulesSearchScope(project) else GlobalSearchScope.projectScope(project) if (includeNonProjectItems) getProjectSearchScope(project) else GlobalSearchScope.projectScope(project)
} }
import ScalaUtil._ import ScalaUtil._

View File

@ -76,8 +76,8 @@ object HaskellModuleNameIndex {
moduleNames.foreach(mn => { moduleNames.foreach(mn => {
val key = Key(project, mn) val key = Key(project, mn)
find(key, 5.seconds, reschedule = true) match { find(key, 5.seconds, reschedule = true) match {
case Right(vf) => Cache.put(key, Right(vf)) case Right(vf) if vf.nonEmpty => Cache.put(key, Right(vf))
case Left(_) => () case _ => ()
} }
}) })
} }
@ -128,7 +128,7 @@ object HaskellModuleNameIndex {
val files = ApplicationUtil.scheduleInReadActionWithWriteActionPriority( val files = ApplicationUtil.scheduleInReadActionWithWriteActionPriority(
project, { project, {
try { try {
Some(FileBasedIndex.getInstance.getContainingFiles(HaskellModuleNameIndex, moduleName, HaskellProjectUtil.getProjectAndLibrariesModulesSearchScope(project)).asScala.toSeq) Some(FileBasedIndex.getInstance.getContainingFiles(HaskellModuleNameIndex, moduleName, HaskellProjectUtil.getProjectSearchScope(project)).asScala.toSeq)
} catch { } catch {
case _: IndexNotReadyException => None case _: IndexNotReadyException => None
} }