Files
nvim/lua/lsp/config/pyright.lua
T
2025-03-28 00:10:01 +01:00

95 lines
2.7 KiB
Lua

local utils = require("utils")
---@type ServerConfig
return {
enable = true,
mason = { "pyright" },
dependencies = { "black", "flake8", "isort" },
linters = {
{
cmd = {
"flake8",
"--max-line-length=80",
"--max-doc-length=80",
"--format",
"%(row)d,%(col)d,%(code)s: %(text)s",
"-",
},
stdin = true,
stdout = true,
pattern = "^(%d+),(%d+),((%w)%d+): (.*)",
groups = { "lnum", "col", "code", "severity", "message" },
source = "flake8",
severity_map = {
E = vim.diagnostic.severity.ERROR,
W = vim.diagnostic.severity.WARN,
B = vim.diagnostic.severity.HINT,
F = vim.diagnostic.severity.HINT,
D = vim.diagnostic.severity.INFO,
},
},
},
keymaps = {
{
mode = "n",
lhs = "<leader>lf",
rhs = function()
utils.format({
cmd = {
"black",
"--line-length",
"80",
"--stdin-filename",
"%filename%",
"--quiet",
"-",
},
output = "stdout",
})
utils.format({
cmd = {
"isort",
"--quiet",
"-",
},
output = "stdout",
})
end,
},
{
mode = "x",
lhs = "<leader>lf",
rhs = function()
utils.format({
cmd = {
"black",
"--line-length",
"80",
"--stdin-filename",
"%filename%",
"--quiet",
"--line-ranges=%row_start%-%row_end%",
"-",
},
output = "stdout",
})
end,
},
},
lspconfig = {
filetypes = { "python" },
cmd = { "pyright-langserver", "--stdio" },
single_file_support = true,
settings = {
python = {
analysis = {
autoSearchPaths = true,
diagnosticMode = "openFilesOnly",
useLibraryCodeForTypes = true,
typeCheckingMode = "off",
},
},
},
},
}