nvim/lua/plugins/lsp.lua
2025-03-04 15:23:46 +01:00

58 lines
1.4 KiB
Lua

return {
{
"williamboman/mason.nvim",
cmd = "Mason",
keys = { { "<Leader>cm", "<cmd>Mason<cr>" } },
opts = {
ui = {
icons = {
package_installed = "",
package_pending = "",
package_uninstalled = "",
},
},
},
},
{
"williamboman/mason-lspconfig.nvim",
event = { "BufReadPre", "BufNewFile" },
dependencies = { "williamboman/mason.nvim" },
opts = {
ensure_installed = { "lua_ls", "gopls" },
},
},
{
"neovim/nvim-lspconfig",
event = { "BufReadPost", "BufNewFile" },
cmd = { "LspInfo", "LspInstall", "LspUninstall" },
opts = {
servers = {
lua_ls = {},
ccls = {},
gopls = {},
},
},
config = function(_, opts)
local lspconfig = require("lspconfig")
-- Servers
for server, config in pairs(opts.servers) do
config.capabilities = require("blink.cmp").get_lsp_capabilities(config.capabilities)
lspconfig[server].setup(config)
end
-- Keybinds
vim.keymap.set("n", "gd", vim.lsp.buf.definition)
vim.keymap.set("n", "<leader>cr", vim.lsp.buf.rename)
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action)
-- Signs
local signs = { Error = "󰅚 ", Warn = "󰀪 ", Hint = "󰌶 ", Info = "" }
for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
end
end,
},
}