vim.lsp.enable({ "gopls", "jsonls", "clangd", "lua_ls", "yamlls", "graphql", "html", "cssls", "omnisharp", "svelte", "templ", "tinymist", "jdtls", "nixd", "qmlls", "zls", "tsgo", }) vim.api.nvim_create_autocmd("LspAttach", { group = vim.api.nvim_create_augroup("lsp", { clear = true }), callback = function(ev) local opts = { buffer = ev.buf, silent = true } nmap("K", vim.lsp.buf.hover, vim.tbl_extend("force", opts, { desc = "Hover Doc" })) nmap("", vim.lsp.buf.signature_help, vim.tbl_extend("force", opts, { desc = "Signature Help" })) nmap("r", vim.lsp.buf.rename, vim.tbl_extend("force", opts, { desc = "Rename" })) nmap("ca", vim.lsp.buf.code_action, vim.tbl_extend("force", opts, { desc = "Code Action" })) nmap("vd", vim.diagnostic.open_float, vim.tbl_extend("force", opts, { desc = "View Diagnostics" })) nmap("lr", "LspRestart", vim.tbl_extend("force", opts, { desc = "Restart LSP" })) end, }) -- Enhance floating preview windows local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...) opts = opts or {} opts.border = opts.border or "rounded" opts.max_width = opts.max_width or 80 opts.max_height = opts.max_height or 20 return orig_util_open_floating_preview(contents, syntax, opts, ...) end