From e6f3cf0839e401a8efa12614910852f9581b227b Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 11 Aug 2025 22:26:18 -0400 Subject: [PATCH] fix pyright --- .gitignore | 1 + packages/opencode/src/cli/cmd/debug/lsp.ts | 4 ---- packages/opencode/src/lsp/server.ts | 19 ++++++++++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 2728097b..33e3deb8 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ node_modules .vscode openapi.json playground +tmp diff --git a/packages/opencode/src/cli/cmd/debug/lsp.ts b/packages/opencode/src/cli/cmd/debug/lsp.ts index 91b13df4..ac1bac7c 100644 --- a/packages/opencode/src/cli/cmd/debug/lsp.ts +++ b/packages/opencode/src/cli/cmd/debug/lsp.ts @@ -2,7 +2,6 @@ import { LSP } from "../../../lsp" import { bootstrap } from "../../bootstrap" import { cmd } from "../cmd" import { Log } from "../../../util/log" -import { appendFile } from "fs/promises" export const LSPCommand = cmd({ command: "lsp", @@ -18,9 +17,6 @@ const DiagnosticsCommand = cmd({ await bootstrap({ cwd: process.cwd() }, async () => { await LSP.touchFile(args.file, true) console.log(await LSP.diagnostics()) - await appendFile(args.file, `\nconst x: number = "foo"`) - await LSP.touchFile(args.file, true) - console.log(await LSP.diagnostics()) }) }, }) diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index 3da5a7e2..6cfba6d9 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -210,7 +210,24 @@ export namespace LSPServer { extensions: [".py", ".pyi"], root: NearestRoot(["pyproject.toml", "setup.py", "setup.cfg", "requirements.txt", "Pipfile", "pyrightconfig.json"]), async spawn(_, root) { - const proc = spawn(BunProc.which(), ["x", "pyright-langserver", "--stdio"], { + let binary = Bun.which("pyright-langserver") + const args = [] + if (!binary) { + const js = path.join(Global.Path.bin, "node_modules", "pyright", "dist", "pyright-langserver.js") + if (!(await Bun.file(js).exists())) { + await Bun.spawn([BunProc.which(), "install", "pyright"], { + cwd: Global.Path.bin, + env: { + ...process.env, + BUN_BE_BUN: "1", + }, + }).exited + } + binary = BunProc.which() + args.push(...["run", js]) + } + args.push("--stdio") + const proc = spawn(binary, args, { cwd: root, env: { ...process.env,