@@ -18,7 +18,9 @@ package com.tang.intellij.lua.project
1818
1919import com.intellij.openapi.vfs.VfsUtil
2020import com.intellij.openapi.vfs.VirtualFile
21+ import com.intellij.util.PathUtil
2122import com.intellij.util.indexing.IndexableSetContributor
23+ import com.intellij.util.io.URLUtil
2224import com.tang.intellij.lua.psi.LuaFileUtil
2325import java.io.File
2426
@@ -28,21 +30,19 @@ import java.io.File
2830 */
2931class LuaPredefinedLibraryProvider : IndexableSetContributor () {
3032
31- /* override fun getAdditionalProjectRootsToIndex(project: Project): MutableSet<VirtualFile> {
32- val dir = LuaFileUtil.getPluginVirtualFile("std")
33- val file = VfsUtil.findFileByIoFile(File(dir), false)
34- val list = mutableSetOf<VirtualFile>()
35- list.add(file!!)
36- return list
37- }*/
38-
3933 private val predefined: Set <VirtualFile > by lazy {
40- val dir = LuaFileUtil .getPluginVirtualFile(" std" )
41- val file = VfsUtil .findFileByIoFile(File (dir), false )
34+ val jarPath = PathUtil .getJarPathForClass(LuaPredefinedLibraryProvider ::class .java)
35+ val dir = if (jarPath.endsWith(" .jar" )) {
36+ VfsUtil .findFileByURL(URLUtil .getJarEntryURL(File (jarPath), " std" ))
37+ } else
38+ VfsUtil .findFileByIoFile(File (" $jarPath /std" ), true )
39+
4240 val set = mutableSetOf<VirtualFile >()
43- if (file != null ) {
44- file.children.forEach { it.putUserData(LuaFileUtil .PREDEFINED_KEY , true ) }
45- set.add(file)
41+ if (dir != null ) {
42+ dir.children.forEach {
43+ it.putUserData(LuaFileUtil .PREDEFINED_KEY , true )
44+ }
45+ set.add(dir)
4646 }
4747 set
4848 }
0 commit comments