feat: improve python experience

This commit is contained in:
Oliver Ladner 2025-05-19 10:17:36 +02:00
commit 034c628ee8
4 changed files with 60 additions and 2 deletions

56
lsp/python.lua Normal file
View file

@ -0,0 +1,56 @@
---@type vim.lsp.Config
local function set_python_path(path)
local clients = vim.lsp.get_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 or {}, { 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 {
cmd = { "basedpyright-langserver", "--stdio" },
filetypes = { "python" },
root_markers = {
"pyproject.toml",
"setup.py",
"setup.cfg",
"requirements.txt",
"Pipfile",
"pyrightconfig.json",
".git",
},
settings = {
basedpyright = {
analysis = {
autoSearchPaths = true,
useLibraryCodeForTypes = true,
diagnosticMode = "openFilesOnly",
},
},
},
on_attach = function(client, bufnr)
vim.api.nvim_buf_create_user_command(bufnr, "LspPyrightOrganizeImports", function()
client:exec_cmd({
command = "basedpyright.organizeimports",
arguments = { vim.uri_from_bufnr(bufnr) },
})
end, {
desc = "Organize Imports",
})
vim.api.nvim_buf_create_user_command(0, "LspPyrightSetPythonPath", set_python_path, {
desc = "Reconfigure basedpyright with the provided python path",
nargs = 1,
complete = "file",
})
end,
}

View file

@ -22,10 +22,11 @@ return {
text = { "woke" },
graphql = { "prettier" },
lua = { "stylua" },
python = { "isort", "black" },
python = { "ruff" },
sh = { "shfmt" },
terraform = { "tflint" },
hcl = { "hclfmt" },
gitcommit = { "commitlint" },
},
stop_after_first = false,
format_on_save = {

View file

@ -11,7 +11,7 @@ return {
javascriptreact = { "eslint_d" },
typescriptreact = { "eslint_d" },
svelte = { "eslint_d" },
python = { "pylint" },
python = { "ruff" },
ansible = { "woke" },
markdown = { "woke", "proselint" },
text = { "woke" },

View file

@ -12,6 +12,7 @@ vim.lsp.enable({
"docker-compose",
"bicep",
"proselint",
"python",
})
-- Set highlight on search