local configs = require 'lspconfig/configs' local util = require 'lspconfig/util' local server_name = 'pyright' local bin_name = 'pyright-langserver' if vim.fn.has 'win32' == 1 then bin_name = bin_name .. '.cmd' end local function organize_imports() local params = { command = 'pyright.organizeimports', arguments = { vim.uri_from_bufnr(0) }, } vim.lsp.buf.execute_command(params) end configs[server_name] = { default_config = { cmd = { bin_name, '--stdio' }, filetypes = { 'python' }, root_dir = function(fname) local root_files = { 'pyproject.toml', 'setup.py', 'setup.cfg', 'requirements.txt', 'Pipfile', 'pyrightconfig.json', } return util.root_pattern(unpack(root_files))(fname) or util.find_git_ancestor(fname) or util.path.dirname(fname) end, settings = { python = { analysis = { autoSearchPaths = true, useLibraryCodeForTypes = true, diagnosticMode = 'workspace', }, }, }, }, commands = { PyrightOrganizeImports = { organize_imports, description = 'Organize Imports', }, }, docs = { package_json = 'https://raw.githubusercontent.com/microsoft/pyright/master/packages/vscode-pyright/package.json', description = [[ https://github.com/microsoft/pyright `pyright`, a static type checker and language server for python ]], }, }