diff --git a/packages/opencode/src/lsp/index.ts b/packages/opencode/src/lsp/index.ts index 9d7d30632ab..77c6b0bc6f4 100644 --- a/packages/opencode/src/lsp/index.ts +++ b/packages/opencode/src/lsp/index.ts @@ -70,9 +70,7 @@ export namespace LSP { } } else { // If experimental flag is disabled, disable ty - if (servers["ty"]) { - delete servers["ty"] - } + if (servers["ty"]) delete servers["ty"] } } diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index a4ebeb5a256..ed75aa588d7 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -451,10 +451,6 @@ export namespace LSPServer { "pyrightconfig.json", ]), async spawn(root) { - if (!Flag.OPENCODE_EXPERIMENTAL_LSP_TY) { - return undefined - } - let binary = Bun.which("ty") const initialization: Record = {} @@ -502,6 +498,36 @@ export namespace LSPServer { }, } + export const Ruff: Info = { + id: "ruff", + extensions: [".py", ".pyi"], + root: NearestRoot([ + "pyproject.toml", + "ruff.toml", + ".ruff.toml", + "setup.py", + "setup.cfg", + "requirements.txt", + "Pipfile", + ]), + async spawn(root) { + let binary = Bun.which("ruff") + + if (!binary) { + log.error("ruff not found, please install ruff first") + return + } + + const proc = spawn(binary, ["server"], { + cwd: root, + }) + + return { + process: proc, + } + }, + } + export const Pyright: Info = { id: "pyright", extensions: [".py", ".pyi"],