return { { "williamboman/mason.nvim", cmd = "Mason", keys = { { "cm", "Mason" } }, 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", "cr", vim.lsp.buf.rename) vim.keymap.set("n", "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, }, }