diff options
Diffstat (limited to 'lsp/basedpyright.lua')
| -rw-r--r-- | lsp/basedpyright.lua | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/lsp/basedpyright.lua b/lsp/basedpyright.lua new file mode 100644 index 00000000..16334a91 --- /dev/null +++ b/lsp/basedpyright.lua @@ -0,0 +1,68 @@ +local function organize_imports() + local params = { + command = 'basedpyright.organizeimports', + arguments = { vim.uri_from_bufnr(0) }, + } + + local clients = vim.lsp.get_clients { + bufnr = vim.api.nvim_get_current_buf(), + name = 'basedpyright', + } + for _, client in ipairs(clients) do + client.request('workspace/executeCommand', params, nil, 0) + end +end + +local function set_python_path(path) + local clients = vim.lsp.get_clients { + bufnr = vim.api.nvim_get_current_buf(), + name = 'basedpyright', + } + for _, client in ipairs(clients) do + if client.settings then + client.settings.python = vim.tbl_deep_extend('force', client.settings.python or {}, { pythonPath = path }) + else + client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { python = { pythonPath = path } }) + end + client.notify('workspace/didChangeConfiguration', { settings = nil }) + end +end + +---@brief +--- +---https://detachhead.github.io/basedpyright +-- +-- `basedpyright`, a static type checker and language server for python +return { + cmd = { 'basedpyright-langserver', '--stdio' }, + filetypes = { 'python' }, + root_markers = { + 'pyproject.toml', + 'setup.py', + 'setup.cfg', + 'requirements.txt', + 'Pipfile', + 'pyrightconfig.json', + '.git', + }, + settings = { + basedpyright = { + analysis = { + autoSearchPaths = true, + useLibraryCodeForTypes = true, + diagnosticMode = 'openFilesOnly', + }, + }, + }, + on_attach = function() + vim.api.nvim_buf_create_user_command(0, 'PyrightOrganizeImports', organize_imports, { + desc = 'Organize Imports', + }) + + vim.api.nvim_buf_create_user_command(0, 'PyrightSetPythonPath', set_python_path, { + desc = 'Reconfigure basedpyright with the provided python path', + nargs = 1, + complete = 'file', + }) + end, +} |
