diff --git a/packages/opencode/src/format/formatter.ts b/packages/opencode/src/format/formatter.ts index d1bff181f5f..4048980809b 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 0bc229e9778..ce2fbfa692d 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 9fc41a53d6f..cc5cb605630 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 5c12f03f698..af9f2cfc14c 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.