feat(lsp): replace jedi+pyright with pyrefly+ruff
This commit is contained in:
@@ -1,164 +0,0 @@
|
|||||||
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,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
local util = require("lspconfig.util")
|
||||||
|
|
||||||
|
---@type ServerConfig
|
||||||
|
return {
|
||||||
|
dependencies = { "pyrefly" },
|
||||||
|
lspconfig = {
|
||||||
|
cmd = { "pyrefly", "lsp" },
|
||||||
|
filetypes = { "python" },
|
||||||
|
root_dir = util.root_pattern(
|
||||||
|
"pyrefly.toml",
|
||||||
|
"pyproject.toml",
|
||||||
|
"setup.py",
|
||||||
|
"setup.cfg",
|
||||||
|
"requirements.txt",
|
||||||
|
"Pipfile",
|
||||||
|
".git"
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
---@type ServerConfig
|
|
||||||
return {
|
|
||||||
enable = true,
|
|
||||||
mason = { "pyright" },
|
|
||||||
lspconfig = {
|
|
||||||
filetypes = {
|
|
||||||
"python",
|
|
||||||
},
|
|
||||||
cmd = { "pyright-langserver", "--stdio" },
|
|
||||||
single_file_support = true,
|
|
||||||
-- https://microsoft.github.io/pyright/#/settings
|
|
||||||
settings = {
|
|
||||||
python = {
|
|
||||||
analysis = {
|
|
||||||
autoSearchPaths = true,
|
|
||||||
diagnosticMode = "openFilesOnly",
|
|
||||||
useLibraryCodeForTypes = true,
|
|
||||||
typeCheckingMode = "strict",
|
|
||||||
stubPath = "stubs",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
pyright = {
|
|
||||||
disableLanguageServices = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
local utils = require("ow.utils")
|
||||||
|
|
||||||
|
---@type ServerConfig
|
||||||
|
return {
|
||||||
|
mason = "ruff",
|
||||||
|
keymaps = {
|
||||||
|
{
|
||||||
|
mode = "n",
|
||||||
|
lhs = "<leader>lf",
|
||||||
|
rhs = function()
|
||||||
|
vim.lsp.buf.format()
|
||||||
|
utils.format({
|
||||||
|
cmd = {
|
||||||
|
"ruff",
|
||||||
|
"check",
|
||||||
|
"--stdin-filename=%file%",
|
||||||
|
"--select=I",
|
||||||
|
"--fix",
|
||||||
|
"--quiet",
|
||||||
|
"-",
|
||||||
|
},
|
||||||
|
output = "stdout",
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user