summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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,
+ }),
+ }
+ },
+ }
}