Add JS lib as module lib. It gives ability to navigate into it.
This commit is contained in:
@@ -20,8 +20,16 @@ import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
|
|||||||
import com.intellij.notification.Notification;
|
import com.intellij.notification.Notification;
|
||||||
import com.intellij.notification.NotificationType;
|
import com.intellij.notification.NotificationType;
|
||||||
import com.intellij.notification.Notifications;
|
import com.intellij.notification.Notifications;
|
||||||
|
import com.intellij.openapi.application.ApplicationManager;
|
||||||
import com.intellij.openapi.module.Module;
|
import com.intellij.openapi.module.Module;
|
||||||
|
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||||
import com.intellij.openapi.roots.ModuleRootManager;
|
import com.intellij.openapi.roots.ModuleRootManager;
|
||||||
|
import com.intellij.openapi.roots.libraries.Library;
|
||||||
|
import com.intellij.openapi.roots.libraries.LibraryTable;
|
||||||
|
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer;
|
||||||
|
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory;
|
||||||
|
import com.intellij.openapi.vfs.JarFileSystem;
|
||||||
|
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.PsiManager;
|
import com.intellij.psi.PsiManager;
|
||||||
import com.intellij.psi.impl.PsiModificationTrackerImpl;
|
import com.intellij.psi.impl.PsiModificationTrackerImpl;
|
||||||
@@ -60,12 +68,35 @@ public final class JsModuleSetUp {
|
|||||||
if (!copyJsLibFiles(rootDir)) return;
|
if (!copyJsLibFiles(rootDir)) return;
|
||||||
|
|
||||||
setUpK2JSModuleComponent(module);
|
setUpK2JSModuleComponent(module);
|
||||||
|
setUpLibraryAsSourceLibrary(module, rootDir);
|
||||||
|
|
||||||
restartHighlightingInTheWholeProject(module);
|
restartHighlightingInTheWholeProject(module);
|
||||||
|
|
||||||
refreshRootDir(module, continuation);
|
refreshRootDir(module, continuation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void setUpLibraryAsSourceLibrary(final Module module, final @NotNull File rootDir) {
|
||||||
|
final File libJarFile = new File(rootDir, "lib/" + PathUtil.JS_LIB_JAR_NAME);
|
||||||
|
final VirtualFile libFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(libJarFile);
|
||||||
|
|
||||||
|
if (libFile != null) {
|
||||||
|
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel();
|
||||||
|
LibraryTable table = model.getModuleLibraryTable();
|
||||||
|
Library jsLib = table.getLibraryByName(PathUtil.JS_LIB_JAR_NAME);
|
||||||
|
if (jsLib == null) {
|
||||||
|
VirtualFile libRoot = JarFileSystem.getInstance().getJarRootForLocalFile(libFile);
|
||||||
|
LibrariesContainerFactory.createContainer(model).createLibrary(PathUtil.JS_LIB_JAR_NAME,
|
||||||
|
LibrariesContainer.LibraryLevel.MODULE, new VirtualFile[0], new VirtualFile[] { libRoot });
|
||||||
|
model.commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void setUpK2JSModuleComponent(@NotNull Module module) {
|
private static void setUpK2JSModuleComponent(@NotNull Module module) {
|
||||||
K2JSModuleComponent jsModuleComponent = K2JSModuleComponent.getInstance(module);
|
K2JSModuleComponent jsModuleComponent = K2JSModuleComponent.getInstance(module);
|
||||||
jsModuleComponent.setJavaScriptModule(true);
|
jsModuleComponent.setJavaScriptModule(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user