Skip to content

Commit bd52f5e

Browse files
committed
predefined std
1 parent 6f8f326 commit bd52f5e

File tree

4 files changed

+28
-12
lines changed

4 files changed

+28
-12
lines changed

src/main/java/com/tang/intellij/lua/annotator/LuaAnnotator.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package com.tang.intellij.lua.annotator
1919
import com.intellij.lang.annotation.AnnotationHolder
2020
import com.intellij.lang.annotation.Annotator
2121
import com.intellij.openapi.editor.DefaultLanguageHighlighterColors
22-
import com.intellij.openapi.roots.FileIndexFacade
2322
import com.intellij.openapi.util.Key
2423
import com.intellij.psi.PsiElement
2524
import com.intellij.psi.search.searches.ReferencesSearch
@@ -125,7 +124,7 @@ class LuaAnnotator : Annotator {
125124
val res = LuaPsiResolveUtil.resolve(o, SearchContext(o.project))
126125
if (res != null) { //std api highlighting
127126
val containingFile = res.containingFile
128-
if (FileIndexFacade.getInstance(o.project).isInLibraryClasses(containingFile.virtualFile)) {
127+
if (LuaFileUtil.isStdLibFile(containingFile.virtualFile, o.project)) {
129128
val annotation = myHolder!!.createInfoAnnotation(o, null)
130129
annotation.textAttributes = LuaHighlightingData.STD_API
131130
o.putUserData(STD_MARKER, true)

src/main/java/com/tang/intellij/lua/project/LuaPredefinedLibraryProvider.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.tang.intellij.lua.project
1818

19-
import com.intellij.openapi.project.Project
2019
import com.intellij.openapi.vfs.VfsUtil
2120
import com.intellij.openapi.vfs.VirtualFile
2221
import com.intellij.util.indexing.IndexableSetContributor
@@ -37,11 +36,18 @@ class LuaPredefinedLibraryProvider : IndexableSetContributor() {
3736
return list
3837
}*/
3938

40-
override fun getAdditionalRootsToIndex(): Set<VirtualFile> {
39+
val predefined: Set<VirtualFile> by lazy {
4140
val dir = LuaFileUtil.getPluginVirtualFile("std")
4241
val file = VfsUtil.findFileByIoFile(File(dir), false)
4342
val set = mutableSetOf<VirtualFile>()
44-
set.add(file!!)
45-
return set
43+
if (file != null) {
44+
file.children.forEach { it.putUserData(LuaFileUtil.PREDEFINED_KEY, true) }
45+
set.add(file)
46+
}
47+
set
48+
}
49+
50+
override fun getAdditionalRootsToIndex(): Set<VirtualFile> {
51+
return predefined
4652
}
4753
}

src/main/java/com/tang/intellij/lua/project/StdSDK.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@
2222
import com.intellij.openapi.projectRoots.Sdk;
2323
import com.intellij.openapi.projectRoots.SdkModificator;
2424
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl;
25-
import com.intellij.openapi.roots.OrderRootType;
26-
import com.intellij.openapi.vfs.VirtualFile;
27-
import com.tang.intellij.lua.psi.LuaFileUtil;
2825
import org.jetbrains.annotations.NotNull;
2926

3027
/**
@@ -37,10 +34,16 @@ public class StdSDK implements ApplicationComponent {
3734
@Override
3835
public void initComponent() {
3936
ProjectJdkTable pjt = ProjectJdkTable.getInstance();
37+
//清除旧的std sdk,不用了,用predefined代替
4038
Sdk mySdk = pjt.findJdk(StdSDK.NAME);
39+
if (mySdk != null) {
40+
SdkModificator sdkModificator = mySdk.getSdkModificator();
41+
sdkModificator.removeAllRoots();
42+
sdkModificator.commitChanges();
43+
}
4144
if (mySdk == null) {
4245
ProjectJdkImpl sdk = new ProjectJdkImpl(StdSDK.NAME, LuaSdkType.getInstance());
43-
SdkModificator sdkModificator = sdk.getSdkModificator();
46+
/*SdkModificator sdkModificator = sdk.getSdkModificator();
4447
4548
VirtualFile dir = LuaFileUtil.getPluginVirtualDirectory();
4649
if (dir != null) {
@@ -56,9 +59,9 @@ public void initComponent() {
5659
}
5760
}
5861
59-
sdkModificator.commitChanges();
62+
sdkModificator.commitChanges();*/
6063

61-
ApplicationManager.getApplication().runWriteAction(() -> ProjectJdkTable.getInstance().addJdk(sdk));
64+
ApplicationManager.getApplication().runWriteAction(() -> pjt.addJdk(sdk));
6265
}
6366
}
6467

src/main/java/com/tang/intellij/lua/psi/LuaFileUtil.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
import com.intellij.openapi.module.Module;
2323
import com.intellij.openapi.module.ModuleManager;
2424
import com.intellij.openapi.project.Project;
25+
import com.intellij.openapi.roots.FileIndexFacade;
2526
import com.intellij.openapi.roots.ModuleRootManager;
27+
import com.intellij.openapi.util.Key;
2628
import com.intellij.openapi.vfs.VfsUtil;
2729
import com.intellij.openapi.vfs.VirtualFile;
2830
import com.intellij.openapi.vfs.VirtualFileManager;
@@ -160,4 +162,10 @@ public static String getPluginVirtualFile(String path) {
160162
}
161163
return null;
162164
}
165+
166+
public static Key<Boolean> PREDEFINED_KEY = Key.create("lua.lib.predefined");
167+
168+
public static boolean isStdLibFile(@NotNull VirtualFile file, Project project) {
169+
return file.getUserData(PREDEFINED_KEY) != null || FileIndexFacade.getInstance(project).isInLibraryClasses(file);
170+
}
163171
}

0 commit comments

Comments
 (0)