Selaa lähdekoodia

fix: resolve virtual envs for python LSP (#2155)

Co-authored-by: rekram1-node <[email protected]>
Andre van Tonder 5 kuukautta sitten
vanhempi
sitoutus
fcfeac57c5
2 muutettua tiedostoa jossa 19 lisäystä ja 0 poistoa
  1. 1 0
      packages/opencode/src/lsp/client.ts
  2. 18 0
      packages/opencode/src/lsp/server.ts

+ 1 - 0
packages/opencode/src/lsp/client.ts

@@ -60,6 +60,7 @@ export namespace LSPClient {
       return null
     })
     connection.onRequest("workspace/configuration", async () => {
+      // Return server initialization options
       return [input.server.initialization ?? {}]
     })
     connection.listen()

+ 18 - 0
packages/opencode/src/lsp/server.ts

@@ -298,6 +298,23 @@ export namespace LSPServer {
         args.push(...["run", js])
       }
       args.push("--stdio")
+
+      const initialization: Record<string, string> = {}
+
+      const potentialVenvPaths = [process.env["VIRTUAL_ENV"], path.join(root, ".venv"), path.join(root, "venv")].filter(
+        (p): p is string => p !== undefined,
+      )
+      for (const venvPath of potentialVenvPaths) {
+        const isWindows = process.platform === "win32"
+        const potentialPythonPath = isWindows
+          ? path.join(venvPath, "Scripts", "python.exe")
+          : path.join(venvPath, "bin", "python")
+        if (await Bun.file(potentialPythonPath).exists()) {
+          initialization["pythonPath"] = potentialPythonPath
+          break
+        }
+      }
+
       const proc = spawn(binary, args, {
         cwd: root,
         env: {
@@ -307,6 +324,7 @@ export namespace LSPServer {
       })
       return {
         process: proc,
+        initialization,
       }
     },
   }