diff options
| author | Dionisio E Alonso <baco@users.noreply.github.com> | 2024-03-17 04:41:20 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-17 15:41:20 +0800 |
| commit | 15a93b34dbd50dd50d06410eb52c9603ad26a7a5 (patch) | |
| tree | 97d10aa9bc03c19b48cf6f579a682c6a63eee60b /lua | |
| parent | docs: update server_configurations.md (diff) | |
| download | nvim-lspconfig-15a93b34dbd50dd50d06410eb52c9603ad26a7a5.tar nvim-lspconfig-15a93b34dbd50dd50d06410eb52c9603ad26a7a5.tar.gz nvim-lspconfig-15a93b34dbd50dd50d06410eb52c9603ad26a7a5.tar.bz2 nvim-lspconfig-15a93b34dbd50dd50d06410eb52c9603ad26a7a5.tar.lz nvim-lspconfig-15a93b34dbd50dd50d06410eb52c9603ad26a7a5.tar.xz nvim-lspconfig-15a93b34dbd50dd50d06410eb52c9603ad26a7a5.tar.zst nvim-lspconfig-15a93b34dbd50dd50d06410eb52c9603ad26a7a5.zip | |
feat: add basedpyright support (#3078)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/lspconfig/server_configurations/basedpyright.lua | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/lua/lspconfig/server_configurations/basedpyright.lua b/lua/lspconfig/server_configurations/basedpyright.lua new file mode 100644 index 00000000..9d547951 --- /dev/null +++ b/lua/lspconfig/server_configurations/basedpyright.lua @@ -0,0 +1,80 @@ +local util = require 'lspconfig.util' + +local root_files = { + 'pyproject.toml', + 'setup.py', + 'setup.cfg', + 'requirements.txt', + 'Pipfile', + 'pyrightconfig.json', + '.git', +} + +local function organize_imports() + local params = { + command = 'basedpyright.organizeimports', + arguments = { vim.uri_from_bufnr(0) }, + } + + local clients = vim.lsp.get_active_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_active_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, { 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 + +return { + default_config = { + cmd = { 'basedpyright-langserver', '--stdio' }, + filetypes = { 'python' }, + root_dir = function(fname) + return util.root_pattern(unpack(root_files))(fname) + end, + single_file_support = true, + settings = { + python = { + analysis = { + autoSearchPaths = true, + useLibraryCodeForTypes = true, + diagnosticMode = 'openFilesOnly', + }, + }, + }, + }, + commands = { + PyrightOrganizeImports = { + organize_imports, + description = 'Organize Imports', + }, + PyrightSetPythonPath = { + set_python_path, + description = 'Reconfigure basedpyright with the provided python path', + nargs = 1, + complete = 'file', + }, + }, + docs = { + description = [[ +https://detachhead.github.io/basedpyright + +`basedpyright`, a static type checker and language server for python +]], + }, +} |
