Files
nvim_config/lua/plugins/config/lsp.lua
2026-02-08 12:54:03 +03:00

48 lines
1.4 KiB
Lua

--local lspconfig = require("lspconfig")
local cmp_nvim_lsp = require("cmp_nvim_lsp")
-- Setup capabilities for nvim-cmp completion
local capabilities = cmp_nvim_lsp.default_capabilities()
-- Common on_attach function to map keys after LSP attaches to buffer
local on_attach = function(client, bufnr)
local bufmap = function(mode, lhs, rhs)
vim.api.nvim_buf_set_keymap(bufnr, mode, lhs, rhs, { noremap = true, silent = true })
end
-- LSP-related keymaps
bufmap("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>")
bufmap("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>")
bufmap("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>")
bufmap("n", "<leader>rn", "<cmd>lua vim.lsp.buf.rename()<CR>")
bufmap("n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>")
bufmap("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>")
bufmap("n", "<leader>f", "<cmd>lua vim.lsp.buf.format()<CR>")
end
-- List of servers to setup
local servers = {
"pyright",
"clangd",
"zls",
"lua_ls",
"vimls",
"marksman",
"texlab",
}
local server_overrides = {
clangd = {
cmd = { "clangd", "--clang-tidy" },
},
}
for _, server in ipairs(servers) do
vim.lsp.config(server, vim.tbl_deep_extend("force", {
on_attach = on_attach,
capabilities = capabilities,
}, server_overrides[server] or {}))
-- Enable the server configuration
vim.lsp.enable(server)
end