48 lines
1.4 KiB
Lua
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
|