34 lines
894 B
Lua
34 lines
894 B
Lua
local path = require('lspconfig/util').path
|
|
|
|
local function get_python_path(workspace)
|
|
-- Use activated virtualenv.
|
|
if vim.env.VIRTUAL_ENV then
|
|
return path.join(vim.env.VIRTUAL_ENV, 'bin', 'python')
|
|
end
|
|
|
|
-- Find and use virtualenv in workspace directory.
|
|
for _, pattern in ipairs({ '*', '.*' }) do
|
|
local match = vim.fn.glob(path.join(workspace, pattern, 'pyvenv.cfg'))
|
|
if match ~= '' then
|
|
return path.join(path.dirname(match), 'bin', 'python')
|
|
end
|
|
end
|
|
|
|
-- Fallback to system Python.
|
|
return exepath('python3') or exepath('python') or 'python'
|
|
end
|
|
|
|
return {
|
|
settings = {
|
|
python = {
|
|
analysis = {
|
|
typeCheckingMode = 'off',
|
|
useLibraryCodeForTypes = true,
|
|
completeFunctionParens = true,
|
|
},
|
|
},
|
|
},
|
|
before_init = function(_, config)
|
|
config.settings.python.pythonPath = get_python_path(config.root_dir)
|
|
end,
|
|
}
|