diff --git a/core/src/main/kotlin/com/falsepattern/zigbrains/project/stdlib/ZigSyntheticLibrary.kt b/core/src/main/kotlin/com/falsepattern/zigbrains/project/stdlib/ZigSyntheticLibrary.kt index 4007c20a..83a5df0d 100644 --- a/core/src/main/kotlin/com/falsepattern/zigbrains/project/stdlib/ZigSyntheticLibrary.kt +++ b/core/src/main/kotlin/com/falsepattern/zigbrains/project/stdlib/ZigSyntheticLibrary.kt @@ -35,6 +35,8 @@ import com.intellij.openapi.vfs.refreshAndFindVirtualDirectory import com.intellij.platform.backend.workspace.WorkspaceModel import com.intellij.platform.backend.workspace.toVirtualFileUrl import com.intellij.platform.workspace.jps.entities.* +import com.intellij.project.isDirectoryBased +import com.intellij.project.stateStore import com.intellij.workspaceModel.ide.legacyBridge.LegacyBridgeJpsEntitySourceFactory import kotlinx.coroutines.runBlocking import java.util.* @@ -75,7 +77,7 @@ class ZigSyntheticLibrary(val project: Project) : SyntheticLibrary(), ItemPresen companion object { private const val ZIG_LIBRARY_ID = "Zig SDK" - private const val ZIG_MODULE_ID = "Zig" + private const val ZIG_MODULE_ID = "ZigBrains" suspend fun reload(project: Project, toolchain: ZigToolchain?) { val moduleId = ModuleId(ZIG_MODULE_ID) val workspaceModel = WorkspaceModel.getInstance(project) @@ -83,7 +85,15 @@ class ZigSyntheticLibrary(val project: Project) : SyntheticLibrary(), ItemPresen val libRoot = LibraryRoot(root.toVirtualFileUrl(workspaceModel.getVirtualFileUrlManager()), LibraryRootTypeId.SOURCES) val libraryTableId = LibraryTableId.ProjectLibraryTableId val libraryId = LibraryId(ZIG_LIBRARY_ID, libraryTableId) - val baseModuleDir = project.guessProjectDir()?.toVirtualFileUrl(workspaceModel.getVirtualFileUrlManager()) ?: return + + var baseModuleDirFile: VirtualFile? = null + if (project.isDirectoryBased) { + baseModuleDirFile = project.stateStore.directoryStorePath?.refreshAndFindVirtualDirectory() + } + if (baseModuleDirFile == null) { + baseModuleDirFile = project.guessProjectDir() + } + val baseModuleDir = baseModuleDirFile?.toVirtualFileUrl(workspaceModel.getVirtualFileUrlManager()) ?: return workspaceModel.update("Update Zig std") { builder -> builder.resolve(moduleId)?.let { moduleEntity -> builder.removeEntity(moduleEntity) diff --git a/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/ZigToolchainService.kt b/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/ZigToolchainService.kt index 5604af3b..a769cc1e 100644 --- a/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/ZigToolchainService.kt +++ b/core/src/main/kotlin/com/falsepattern/zigbrains/project/toolchain/ZigToolchainService.kt @@ -22,7 +22,10 @@ package com.falsepattern.zigbrains.project.toolchain +import com.falsepattern.zigbrains.project.stdlib.ZigSyntheticLibrary import com.falsepattern.zigbrains.project.toolchain.base.ZigToolchain +import com.falsepattern.zigbrains.shared.zigCoroutineScope +import com.intellij.openapi.application.EDT import com.intellij.openapi.components.SerializablePersistentStateComponent import com.intellij.openapi.components.Service import com.intellij.openapi.components.State @@ -30,6 +33,8 @@ import com.intellij.openapi.components.Storage import com.intellij.openapi.components.service import com.intellij.openapi.project.Project import com.intellij.util.xmlb.annotations.Attribute +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import java.util.UUID @Service(Service.Level.PROJECT) @@ -37,7 +42,7 @@ import java.util.UUID name = "ZigToolchain", storages = [Storage("zigbrains.xml")] ) -class ZigToolchainService: SerializablePersistentStateComponent(State()), IZigToolchainService { +class ZigToolchainService(val project: Project): SerializablePersistentStateComponent(State()), IZigToolchainService { override var toolchainUUID: UUID? get() = state.toolchain.ifBlank { null }?.let { UUID.fromString(it) }?.takeIf { if (ZigToolchainListService.getInstance().hasToolchain(it)) { @@ -53,6 +58,9 @@ class ZigToolchainService: SerializablePersistentStateComponent( } private var myView: ZigToolchainPanel? = null - var floating: Boolean = false - abstract fun createPanel(): ZigToolchainPanel override fun createOptionsPanel(): JComponent? {