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

Co-authored-by: rekram1-node <aidenpcline@gmail.com>
This commit is contained in:
Andre van Tonder
2025-08-31 14:53:03 +10:00
committed by GitHub
parent 2946898934
commit fcfeac57c5
2 changed files with 19 additions and 0 deletions

View File

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

View File

@@ -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,
}
},
}