Dax Raad 8 mēneši atpakaļ
vecāks
revīzija
e6f3cf0839

+ 1 - 0
.gitignore

@@ -6,3 +6,4 @@ node_modules
 .vscode
 openapi.json
 playground
+tmp

+ 0 - 4
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())
     })
   },
 })

+ 18 - 1
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,