summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGabriel Patzleiner <[email protected]>2026-01-03 08:14:01 +0100
committerGitHub <[email protected]>2026-01-03 01:14:01 -0600
commitda6df3d432b8f235aa48aab42ee9efd261af3ad0 (patch)
tree6391a8e6448df70f8e2a74a51ccba129dc0d406d
parentb9b0e3475c285621b399167768e6c80d4ce27bcf (diff)
downloadopencode-da6df3d432b8f235aa48aab42ee9efd261af3ad0.tar.gz
opencode-da6df3d432b8f235aa48aab42ee9efd261af3ad0.zip
fix(kotlin-ls): improve root detection for Gradle multi-project builds (#6717)
-rw-r--r--packages/opencode/src/lsp/server.ts14
1 files changed, 13 insertions, 1 deletions
diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts
index 4629f924d..29d027ace 100644
--- a/packages/opencode/src/lsp/server.ts
+++ b/packages/opencode/src/lsp/server.ts
@@ -1212,7 +1212,19 @@ export namespace LSPServer {
export const KotlinLS: Info = {
id: "kotlin-ls",
extensions: [".kt", ".kts"],
- root: NearestRoot(["build.gradle", "build.gradle.kts", "settings.gradle.kts", "pom.xml"]),
+ root: async (file) => {
+ // 1) Nearest Gradle root (multi-project or included build)
+ const settingsRoot = await NearestRoot(["settings.gradle.kts", "settings.gradle"])(file)
+ if (settingsRoot) return settingsRoot
+ // 2) Gradle wrapper (strong root signal)
+ const wrapperRoot = await NearestRoot(["gradlew", "gradlew.bat"])(file)
+ if (wrapperRoot) return wrapperRoot
+ // 3) Single-project or module-level build
+ const buildRoot = await NearestRoot(["build.gradle.kts", "build.gradle"])(file)
+ if (buildRoot) return buildRoot
+ // 4) Maven fallback
+ return NearestRoot(["pom.xml"])(file)
+ },
async spawn(root) {
const distPath = path.join(Global.Path.bin, "kotlin-ls")
const launcherScript =