require("mason").setup() vim.keymap.set('n', 'gd', vim.lsp.buf.definition, { desc = "Go to definition" }) vim.keymap.set('n', 'gh', vim.lsp.buf.hover, { desc = "Hover" }) vim.keymap.set("n", "fm", vim.lsp.buf.format, { desc = "Format Local buffer" }) vim.keymap.set("n", "df", vim.diagnostic.open_float, { desc = "Show line diagnostics" }) vim.keymap.set("n", "ca", vim.lsp.buf.code_action, { desc = "Code action" }) local diagnostic_goto = function(next, severity) return function() vim.diagnostic.jump({ count = (next and 1 or -1) * vim.v.count1, severity = severity and vim.diagnostic.severity[severity] or nil, float = true, }) end end vim.keymap.set("n", "]d", diagnostic_goto(true), { desc = "Next Diagnostic" }) vim.keymap.set("n", "[d", diagnostic_goto(false), { desc = "Prev Diagnostic" }) vim.keymap.set("n", "]e", diagnostic_goto(true, "ERROR"), { desc = "Next Error" }) vim.keymap.set("n", "[e", diagnostic_goto(false, "ERROR"), { desc = "Prev Error" }) vim.keymap.set("n", "]w", diagnostic_goto(true, "WARN"), { desc = "Next Warning" }) vim.keymap.set("n", "[w", diagnostic_goto(false, "WARN"), { desc = "Prev Warning" }) vim.diagnostic.config({ virtual_text = true }) local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = vim.tbl_deep_extend("force", capabilities, require("mini.completion").get_lsp_capabilities()) vim.lsp.config("*", { capabilities = capabilities }) vim.lsp.config("lua_ls", { settings = { Lua = { diagnostics = { globals = { "vim" } }, }, }, }) vim.lsp.enable({ "html", "cssls", "gopls", "vtsls", "rust_analyzer", "lua_ls", "taplo", "svelte", "dartls", "kotlin_lsp" })