wire up synthetic library reloads to new config
This commit is contained in:
parent
68b60e2c77
commit
1725b189a4
3 changed files with 21 additions and 5 deletions
|
@ -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)
|
||||
|
|
|
@ -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<ZigToolchainService.State>(State()), IZigToolchainService {
|
||||
class ZigToolchainService(val project: Project): SerializablePersistentStateComponent<ZigToolchainService.State>(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<ZigToolchainServ
|
|||
updateState {
|
||||
it.copy(toolchain = value?.toString() ?: "")
|
||||
}
|
||||
zigCoroutineScope.launch(Dispatchers.EDT) {
|
||||
ZigSyntheticLibrary.reload(project, toolchain)
|
||||
}
|
||||
}
|
||||
|
||||
override val toolchain: ZigToolchain?
|
||||
|
|
|
@ -41,8 +41,6 @@ abstract class ZigToolchainConfigurable<T: ZigToolchain>(
|
|||
}
|
||||
private var myView: ZigToolchainPanel<T>? = null
|
||||
|
||||
var floating: Boolean = false
|
||||
|
||||
abstract fun createPanel(): ZigToolchainPanel<T>
|
||||
|
||||
override fun createOptionsPanel(): JComponent? {
|
||||
|
|
Loading…
Add table
Reference in a new issue