diff options
| author | Christoph <[email protected]> | 2025-11-28 07:33:45 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-28 00:33:45 -0600 |
| commit | 7112a706b8c9bb557d0e7e583bddaa63cbb2b522 (patch) | |
| tree | 990893ac4764c35a8b6b712368f280d679a1aaba | |
| parent | 025a47d01f83d4843c3e95ebf0a77a4b1ebd1f0c (diff) | |
| download | opencode-7112a706b8c9bb557d0e7e583bddaa63cbb2b522.tar.gz opencode-7112a706b8c9bb557d0e7e583bddaa63cbb2b522.zip | |
core: add built-in Dart LSP server and formatter (#4841)
| -rw-r--r-- | packages/opencode/src/format/formatter.ts | 9 | ||||
| -rw-r--r-- | packages/opencode/src/lsp/server.ts | 18 | ||||
| -rw-r--r-- | packages/web/src/content/docs/formatters.mdx | 1 | ||||
| -rw-r--r-- | packages/web/src/content/docs/lsp.mdx | 1 |
4 files changed, 29 insertions, 0 deletions
diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts index d1bff181f..404898080 100644 --- a/packages/opencode/src/format/formatter.ts +++ b/packages/opencode/src/format/formatter.ts @@ -246,3 +246,12 @@ export const htmlbeautifier: Info = { return Bun.which("htmlbeautifier") !== null }, } + +export const dart: Info = { + name: "dart", + command: ["dart", "format", "$FILE"], + extensions: [".dart"], + async enabled() { + return Bun.which("dart") !== null + }, +} diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index 0bc229e97..ce2fbfa69 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -1166,4 +1166,22 @@ export namespace LSPServer { } }, } + + export const Dart: Info = { + id: "dart", + extensions: [".dart"], + root: NearestRoot(["pubspec.yaml", "analysis_options.yaml"]), + async spawn(root) { + const dart = Bun.which("dart") + if (!dart) { + log.info("dart not found, please install dart first") + return + } + return { + process: spawn(dart, ["language-server", "--lsp"], { + cwd: root, + }), + } + }, + } } diff --git a/packages/web/src/content/docs/formatters.mdx b/packages/web/src/content/docs/formatters.mdx index 9fc41a53d..cc5cb6056 100644 --- a/packages/web/src/content/docs/formatters.mdx +++ b/packages/web/src/content/docs/formatters.mdx @@ -26,6 +26,7 @@ OpenCode comes with several built-in formatters for popular languages and framew | standardrb | .rb, .rake, .gemspec, .ru | `standardrb` command available | | htmlbeautifier | .erb, .html.erb | `htmlbeautifier` command available | | air | .R | `air` command available | +| dart | .dart | `dart` command available | So if your project has `prettier` in your `package.json`, OpenCode will automatically use it. diff --git a/packages/web/src/content/docs/lsp.mdx b/packages/web/src/content/docs/lsp.mdx index 5c12f03f6..af9f2cfc1 100644 --- a/packages/web/src/content/docs/lsp.mdx +++ b/packages/web/src/content/docs/lsp.mdx @@ -32,6 +32,7 @@ OpenCode comes with several built-in LSP servers for popular languages: | lua-ls | .lua | Auto-installs for Lua projects | | sourcekit-lsp | .swift, .objc, .objcpp | `swift` installed (`xcode` on macOS) | | php intelephense | .php | Auto-installs for PHP projects | +| dart | .dart | `dart` command available | LSP servers are automatically enabled when one of the above file extensions are detected and the requirements are met. |
