diff --git a/src/main/kotlin/org/pkl/lsp/ast/PklModuleUri.kt b/src/main/kotlin/org/pkl/lsp/ast/PklModuleUri.kt index 26ed77ec..87e5813d 100644 --- a/src/main/kotlin/org/pkl/lsp/ast/PklModuleUri.kt +++ b/src/main/kotlin/org/pkl/lsp/ast/PklModuleUri.kt @@ -16,6 +16,7 @@ package org.pkl.lsp.ast import io.github.treesitter.jtreesitter.Node +import java.nio.file.Files import java.nio.file.Path import org.pkl.lsp.* import org.pkl.lsp.FsFile @@ -125,6 +126,15 @@ class PklModuleUriImpl(project: Project, override val parent: PklNode, override ?.resolve(targetUri.fragment) vfile?.getModule()?.get() } + "modulepath" -> { + context + ?.metadata + ?.evaluatorSettings + ?.modulePath + ?.map { context?.projectDir?.resolve(it, targetUri.path.trimStart('/')) } + ?.firstOrNull(Files::exists) + ?.let { path -> sourceFile.project.virtualFileManager.get(path)?.getModule()?.get() } + } // targetUri is a relative URI null -> { when { diff --git a/src/main/kotlin/org/pkl/lsp/packages/dto/PklProject.kt b/src/main/kotlin/org/pkl/lsp/packages/dto/PklProject.kt index 371c4754..a01d7773 100644 --- a/src/main/kotlin/org/pkl/lsp/packages/dto/PklProject.kt +++ b/src/main/kotlin/org/pkl/lsp/packages/dto/PklProject.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,7 +49,11 @@ data class PklProject(val metadata: DerivedProjectMetadata, val projectDeps: Pro val evaluatorSettings: EvaluatorSettings?, ) - @Serializable data class EvaluatorSettings(val moduleCacheDir: String? = null) + @Serializable + data class EvaluatorSettings( + val moduleCacheDir: String? = null, + val modulePath: List? = null, + ) @Serializable data class ProjectDeps(