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.WorkspaceModel
|
||||||
import com.intellij.platform.backend.workspace.toVirtualFileUrl
|
import com.intellij.platform.backend.workspace.toVirtualFileUrl
|
||||||
import com.intellij.platform.workspace.jps.entities.*
|
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 com.intellij.workspaceModel.ide.legacyBridge.LegacyBridgeJpsEntitySourceFactory
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -75,7 +77,7 @@ class ZigSyntheticLibrary(val project: Project) : SyntheticLibrary(), ItemPresen
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val ZIG_LIBRARY_ID = "Zig SDK"
|
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?) {
|
suspend fun reload(project: Project, toolchain: ZigToolchain?) {
|
||||||
val moduleId = ModuleId(ZIG_MODULE_ID)
|
val moduleId = ModuleId(ZIG_MODULE_ID)
|
||||||
val workspaceModel = WorkspaceModel.getInstance(project)
|
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 libRoot = LibraryRoot(root.toVirtualFileUrl(workspaceModel.getVirtualFileUrlManager()), LibraryRootTypeId.SOURCES)
|
||||||
val libraryTableId = LibraryTableId.ProjectLibraryTableId
|
val libraryTableId = LibraryTableId.ProjectLibraryTableId
|
||||||
val libraryId = LibraryId(ZIG_LIBRARY_ID, libraryTableId)
|
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 ->
|
workspaceModel.update("Update Zig std") { builder ->
|
||||||
builder.resolve(moduleId)?.let { moduleEntity ->
|
builder.resolve(moduleId)?.let { moduleEntity ->
|
||||||
builder.removeEntity(moduleEntity)
|
builder.removeEntity(moduleEntity)
|
||||||
|
|
|
@ -22,7 +22,10 @@
|
||||||
|
|
||||||
package com.falsepattern.zigbrains.project.toolchain
|
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.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.SerializablePersistentStateComponent
|
||||||
import com.intellij.openapi.components.Service
|
import com.intellij.openapi.components.Service
|
||||||
import com.intellij.openapi.components.State
|
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.components.service
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.util.xmlb.annotations.Attribute
|
import com.intellij.util.xmlb.annotations.Attribute
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@Service(Service.Level.PROJECT)
|
@Service(Service.Level.PROJECT)
|
||||||
|
@ -37,7 +42,7 @@ import java.util.UUID
|
||||||
name = "ZigToolchain",
|
name = "ZigToolchain",
|
||||||
storages = [Storage("zigbrains.xml")]
|
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?
|
override var toolchainUUID: UUID?
|
||||||
get() = state.toolchain.ifBlank { null }?.let { UUID.fromString(it) }?.takeIf {
|
get() = state.toolchain.ifBlank { null }?.let { UUID.fromString(it) }?.takeIf {
|
||||||
if (ZigToolchainListService.getInstance().hasToolchain(it)) {
|
if (ZigToolchainListService.getInstance().hasToolchain(it)) {
|
||||||
|
@ -53,6 +58,9 @@ class ZigToolchainService: SerializablePersistentStateComponent<ZigToolchainServ
|
||||||
updateState {
|
updateState {
|
||||||
it.copy(toolchain = value?.toString() ?: "")
|
it.copy(toolchain = value?.toString() ?: "")
|
||||||
}
|
}
|
||||||
|
zigCoroutineScope.launch(Dispatchers.EDT) {
|
||||||
|
ZigSyntheticLibrary.reload(project, toolchain)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val toolchain: ZigToolchain?
|
override val toolchain: ZigToolchain?
|
||||||
|
|
|
@ -41,8 +41,6 @@ abstract class ZigToolchainConfigurable<T: ZigToolchain>(
|
||||||
}
|
}
|
||||||
private var myView: ZigToolchainPanel<T>? = null
|
private var myView: ZigToolchainPanel<T>? = null
|
||||||
|
|
||||||
var floating: Boolean = false
|
|
||||||
|
|
||||||
abstract fun createPanel(): ZigToolchainPanel<T>
|
abstract fun createPanel(): ZigToolchainPanel<T>
|
||||||
|
|
||||||
override fun createOptionsPanel(): JComponent? {
|
override fun createOptionsPanel(): JComponent? {
|
||||||
|
|
Loading…
Add table
Reference in a new issue