Files
nvim_windows/lua/plugins/config/lsp.lua
2026-01-16 22:15:49 +03:00

42 lines
1.3 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.formatting()<CR>")
end
-- List of servers to setup
local servers = {
"pyright",
"clangd",
"zls",
"lua_ls",
"vimls",
"marksman",
"texlab",
}
for _, server in ipairs(servers) do
vim.lsp.config(server, {
on_attach = on_attach,
capabilities = capabilities,
})
-- Enable the server configuration
vim.lsp.enable(server)
end