From 27fdb08000396912f603a19d5ffd084e25da9630 Mon Sep 17 00:00:00 2001 From: Jonathan Davies Date: Sun, 16 Aug 2026 20:03:53 +0000 Subject: [PATCH] feat(lsp): add Marksman language server for Markdown --- packages/core/src/v1/config/lsp.ts | 1 + packages/opencode/src/lsp/server.ts | 17 +++++++++++++++++ packages/web/src/content/docs/lsp.mdx | 1 + 3 files changed, 19 insertions(+) diff --git a/packages/core/src/v1/config/lsp.ts b/packages/core/src/v1/config/lsp.ts index 89a58b5b2c9b..2edee94b6d41 100644 --- a/packages/core/src/v1/config/lsp.ts +++ b/packages/core/src/v1/config/lsp.ts @@ -58,6 +58,7 @@ export const builtinServerIds = [ "tinymist", "haskell-language-server", "julials", + "marksman", ] export const requiresExtensionsForCustomServers = Schema.makeFilter< diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index 2be68aa5a92d..a8cf83ff94ee 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -1981,3 +1981,20 @@ export const JuliaLS: Info = { } }, } + +export const Marksman: Info = { + id: "marksman", + extensions: [".md", ".markdown"], + root: NearestRoot([".git", ".marksman.toml"]), + async spawn(root) { + const bin = which("marksman") + if (!bin) { + return + } + return { + process: spawn(bin, ["server"], { + cwd: root, + }), + } + }, +} diff --git a/packages/web/src/content/docs/lsp.mdx b/packages/web/src/content/docs/lsp.mdx index b9428e5b2d30..204f63af4b42 100644 --- a/packages/web/src/content/docs/lsp.mdx +++ b/packages/web/src/content/docs/lsp.mdx @@ -30,6 +30,7 @@ OpenCode comes with several built-in LSP servers for popular languages: | julials | .jl | `julia` and `LanguageServer.jl` installed | | kotlin-ls | .kt, .kts | Auto-installs for Kotlin projects | | lua-ls | .lua | Auto-installs for Lua projects | +| marksman | .md, .markdown | `marksman` command available | | nixd | .nix | `nixd` command available | | ocaml-lsp | .ml, .mli | `ocamllsp` command available | | oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` dependency in project |