summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarco <[email protected]>2025-12-26 04:04:43 +0100
committerGitHub <[email protected]>2025-12-25 21:04:43 -0600
commitd9f0f582774fb75745077af29005fb9769bcbb0c (patch)
tree0ac75a3ebe002b8f7a65c0c400ccd4fa88a9e945
parenteffa7b45cfadc8a53b073f1375281a9de6ada670 (diff)
downloadopencode-d9f0f582774fb75745077af29005fb9769bcbb0c.tar.gz
opencode-d9f0f582774fb75745077af29005fb9769bcbb0c.zip
feat: haskell lsp support (#6141)
-rw-r--r--packages/opencode/src/lsp/language.ts1
-rw-r--r--packages/opencode/src/lsp/server.ts18
2 files changed, 19 insertions, 0 deletions
diff --git a/packages/opencode/src/lsp/language.ts b/packages/opencode/src/lsp/language.ts
index 620944a8e..d279f7d64 100644
--- a/packages/opencode/src/lsp/language.ts
+++ b/packages/opencode/src/lsp/language.ts
@@ -39,6 +39,7 @@ export const LANGUAGE_EXTENSIONS: Record<string, string> = {
".hbs": "handlebars",
".handlebars": "handlebars",
".hs": "haskell",
+ ".lhs": "haskell",
".html": "html",
".htm": "html",
".ini": "ini",
diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts
index b432e5a5d..0610aa2d0 100644
--- a/packages/opencode/src/lsp/server.ts
+++ b/packages/opencode/src/lsp/server.ts
@@ -1892,4 +1892,22 @@ export namespace LSPServer {
}
},
}
+
+ export const HLS: Info = {
+ id: "haskell-language-server",
+ extensions: [".hs", ".lhs"],
+ root: NearestRoot(["stack.yaml", "cabal.project", "hie.yaml", "*.cabal"]),
+ async spawn(root) {
+ const bin = Bun.which("haskell-language-server-wrapper")
+ if (!bin) {
+ log.info("haskell-language-server-wrapper not found, please install haskell-language-server")
+ return
+ }
+ return {
+ process: spawn(bin, ["--lsp"], {
+ cwd: root,
+ }),
+ }
+ },
+ }
}