39 lines
1.3 KiB
Lua
39 lines
1.3 KiB
Lua
return {
|
|
cmd = { "pyright-langserver", "--stdio" },
|
|
filetypes = { "python" },
|
|
root_markers = { "pyproject.toml", "setup.py", "setup.cfg", "requirements.txt", ".git" },
|
|
on_new_config = function(new_config, root_dir)
|
|
local resolved_root = vim.fs.normalize(vim.fn.expand(root_dir))
|
|
local venv_python = resolved_root .. "/.venv/bin/python"
|
|
if vim.uv.fs_stat(venv_python) then
|
|
new_config.settings = new_config.settings or {}
|
|
new_config.settings.python = new_config.settings.python or {}
|
|
new_config.settings.python.pythonPath = venv_python
|
|
end
|
|
end,
|
|
on_init = function(client)
|
|
local root_dir = client.config.root_dir
|
|
if not root_dir then
|
|
return
|
|
end
|
|
|
|
local resolved_root = vim.fs.normalize(vim.fn.expand(root_dir))
|
|
local venv_python = resolved_root .. "/.venv/bin/python"
|
|
if vim.uv.fs_stat(venv_python) then
|
|
client.config.settings = client.config.settings or {}
|
|
client.config.settings.python = client.config.settings.python or {}
|
|
client.config.settings.python.pythonPath = venv_python
|
|
client.notify("workspace/didChangeConfiguration", { settings = client.config.settings })
|
|
end
|
|
end,
|
|
settings = {
|
|
python = {
|
|
analysis = {
|
|
autoSearchPaths = true,
|
|
useLibraryCodeForTypes = true,
|
|
diagnosticMode = "openFilesOnly",
|
|
},
|
|
},
|
|
},
|
|
}
|