Files
nvim/lua/ow/lsp/config/jedi_language_server.lua
T

165 lines
4.1 KiB
Lua

local utils = require("ow.utils")
local ERROR = vim.diagnostic.severity.ERROR
local WARN = vim.diagnostic.severity.WARN
local INFO = vim.diagnostic.severity.INFO
local HINT = vim.diagnostic.severity.HINT
local SEVERITY_MAP = {
YTT = WARN,
ANN = WARN,
ASYNC = WARN,
B = WARN,
A = WARN,
COM = WARN,
C = WARN,
DTZ = WARN,
T = WARN,
FIX = WARN,
FA = WARN,
ISC = WARN,
PIE = WARN,
PYI = WARN,
PT = WARN,
RET = WARN,
SIM = WARN,
TC = WARN,
I = WARN,
E = ERROR,
W = WARN,
DOC = WARN,
D = INFO,
F = WARN,
PLC = WARN,
PLE = ERROR,
PLR = WARN,
PLW = WARN,
UP = WARN,
RUF = WARN,
}
---@type ServerConfig
return {
enable = true,
mason = { "jedi-language-server", dependencies = { "ruff" } },
linters = {
{
cmd = {
"ruff",
"check",
"--stdin-filename=%file%",
"--output-format=json",
"-q",
"-",
},
stdin = true,
stdout = true,
json = {
lnum = "location.row",
end_lnum = "end_location.row",
col = "location.column",
end_col = "end_location.column",
code = "code",
message = "message",
callback = function(diag)
if diag.severity or not diag.code then
return
end
diag.severity = SEVERITY_MAP[diag.code:match("^(%u+)")]
end,
},
source = "ruff",
tags = {
deprecated = {
"PYI057",
"PT020",
"UP005",
"UP019",
"UP021",
"UP023",
"UP026",
"UP035",
},
unnecessary = {
"ARG001",
"ARG002",
"ARG003",
"ARG004",
"ARG005",
"F401",
"F504",
"F522",
"F811",
"F841",
"F842",
"RUF029",
"RUF059",
"RUF100",
},
},
},
},
keymaps = {
{
mode = "n",
lhs = "<leader>lf",
rhs = function()
utils.format({
cmd = {
"ruff",
"format",
"--stdin-filename=%file%",
"--quiet",
"-",
},
output = "stdout",
})
utils.format({
cmd = {
"ruff",
"check",
"--stdin-filename=%file%",
"--select=I",
"--fix",
"--quiet",
"-",
},
output = "stdout",
})
end,
},
{
mode = "x",
lhs = "<leader>lf",
rhs = function()
utils.format({
cmd = {
"ruff",
"format",
"--stdin-filename=%file%",
"--quiet",
"--range=%row_start%:%col_start%-%row_end%:%col_end%",
"-",
},
output = "stdout",
})
end,
},
},
lspconfig = {
filetypes = {
"python",
},
cmd = { "jedi-language-server" },
single_file_support = true,
init_options = {
completion = {
disableSnippets = true,
},
diagnostics = {
enable = true,
},
},
},
}