You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

51 lines
1.5 KiB

local util = require("lspconfig.util")
-- Function to get python path (you can customize this)
local function get_python_path(workspace)
-- Check for virtual environment
if vim.env.VIRTUAL_ENV then
return vim.env.VIRTUAL_ENV .. "/bin/python"
end
-- Check for poetry
if util.root_pattern("pyproject.toml")(workspace) then
local handle = io.popen("cd " .. workspace .. " && poetry env info --path 2>/dev/null")
if handle then
local poetry_venv = handle:read("*a"):gsub("\n", "")
handle:close()
if poetry_venv ~= "" then
return poetry_venv .. "/bin/python"
end
end
end
-- Check for pipenv
if util.root_pattern("Pipfile")(workspace) then
local handle = io.popen("cd " .. workspace .. " && pipenv --venv 2>/dev/null")
if handle then
local pipenv_venv = handle:read("*a"):gsub("\n", "")
handle:close()
if pipenv_venv ~= "" then
return pipenv_venv .. "/bin/python"
end
end
end
-- Default to system python
return "python3"
end
return {
before_init = function(_, config)
config.settings.python.pythonPath = get_python_path(config.root_dir)
end,
settings = {
python = {
analysis = {
autoSearchPaths = true,
useLibraryCodeForTypes = true,
diagnosticMode = "workspace",
},
},
},
}