diff options
| author | Gabriel Patzleiner <[email protected]> | 2026-01-03 08:14:01 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-01-03 01:14:01 -0600 |
| commit | da6df3d432b8f235aa48aab42ee9efd261af3ad0 (patch) | |
| tree | 6391a8e6448df70f8e2a74a51ccba129dc0d406d | |
| parent | b9b0e3475c285621b399167768e6c80d4ce27bcf (diff) | |
| download | opencode-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.ts | 14 |
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 = |
