This commit is contained in:
Ian
2026-07-16 23:50:59 +02:00
parent 0da0684f14
commit 787871f897
3 changed files with 88 additions and 47 deletions
+15
View File
@@ -0,0 +1,15 @@
return {
cmd = { "lua-language-server" },
filetypes = { "lua" },
root_markers = { { ".luarc.json", ".luarc.jsonc" }, ".git" },
settings = {
Lua = {
runtime = {
version = "LuaJIT",
},
workspace = {
library = vim.api.nvim_get_runtime_file("", true),
},
},
},
}
+68
View File
@@ -0,0 +1,68 @@
---@brief
---
--- https://github.com/microsoft/pyright
---
--- `pyright`, a static type checker and language server for python
local function set_python_path(command)
local path = command.args
local clients = vim.lsp.get_clients {
bufnr = vim.api.nvim_get_current_buf(),
name = 'pyright',
}
for _, client in ipairs(clients) do
if client.settings then
client.settings.python =
vim.tbl_deep_extend('force', client.settings.python --[[@as table]], { 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
---@type vim.lsp.Config
return {
cmd = { 'pyright-langserver', '--stdio' },
filetypes = { 'python' },
root_markers = {
'pyrightconfig.json',
'pyproject.toml',
'setup.py',
'setup.cfg',
'requirements.txt',
'Pipfile',
'.git',
},
---@type lspconfig.settings.pyright
settings = {
python = {
analysis = {
autoSearchPaths = true,
useLibraryCodeForTypes = true,
diagnosticMode = 'openFilesOnly',
},
},
},
on_attach = function(client, bufnr)
vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightOrganizeImports', function()
local params = {
command = 'pyright.organizeimports',
arguments = { vim.uri_from_bufnr(bufnr) },
}
-- Using client.request() directly because "pyright.organizeimports" is private
-- (not advertised via capabilities), which client:exec_cmd() refuses to call.
-- https://github.com/neovim/neovim/blob/c333d64663d3b6e0dd9aa440e433d346af4a3d81/runtime/lua/vim/lsp/client.lua#L1024-L1030
---@diagnostic disable-next-line: param-type-mismatch
client.request('workspace/executeCommand', params, nil, bufnr)
end, {
desc = 'Organize Imports',
})
vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightSetPythonPath', set_python_path, {
desc = 'Reconfigure pyright with the provided python path',
nargs = 1,
complete = 'file',
})
end,
}
+5 -47
View File
@@ -1,51 +1,9 @@
vim.o.autocomplete = true
vim.o.complete = ".^5,t^3,w,o"
vim.o.pummaxwidth = 40
vim.o.completeopt = 'menu,menuone,noselect'
vim.o.completeopt = "menu,menuone,noselect"
vim.lsp.config["lua"] = {
cmd = { "lua-language-server" },
filetypes = { "lua" },
root_markers = { { ".luarc.json", ".luarc.jsonc" }, ".git" },
settings = {
Lua = {
runtime = {
version = "LuaJIT",
},
workspace = {
library = vim.api.nvim_get_runtime_file("", true),
},
},
},
}
vim.lsp.enable("lua")
vim.lsp.config["python"] = {
cmd = { "pyright-langserver", "--stdio" },
filetypes = { "python" },
root_markers = {
"pyproject.toml",
".git",
},
settings = {
python = {
analysis = {
autoSearchPaths = true,
diagnosticMode = "workspace",
useLibraryCodeForTypes = true,
},
},
},
}
vim.lsp.enable("python")
-- vim.api.nvim_create_autocmd("LspAttach", {
-- callback = function(args)
-- local client = vim.lsp.get_client_by_id(args.data.client_id)
--
-- if client:supports_method("textDocument/completion") then
-- vim.bo[args.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
-- end
-- end,
-- })
vim.lsp.enable({
"lua_ls",
"python_ls"
})