local map = vim.keymap.set local conf = require("nvconfig").ui.lsp local on_attach = function(client, bufnr) local function opts(desc) return { buffer = bufnr, desc = desc } end map("n", "gD", vim.lsp.buf.declaration, opts "Lsp Go to declaration") map("n", "gd", vim.lsp.buf.definition, opts "Lsp Go to definition") map("n", "K", vim.lsp.buf.hover, opts "Lsp hover information") map("n", "gi", vim.lsp.buf.implementation, opts "Lsp Go to implementation") map("n", "sh", vim.lsp.buf.signature_help, opts "Lsp Show signature help") map("n", "wa", vim.lsp.buf.add_workspace_folder, opts "Lsp Add workspace folder") map("n", "wr", vim.lsp.buf.remove_workspace_folder, opts "Lsp Remove workspace folder") map("n", "wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, opts "Lsp List workspace folders") map("n", "D", vim.lsp.buf.type_definition, opts "Lsp Go to type definition") map("n", "ra", function() require "nvchad.lsp.renamer"() end, opts "Lsp NvRenamer") map({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts "Lsp Code action") map("n", "gr", "Telescope lsp_references", opts "[G]et [R]eferences") -- setup signature popup if conf.signature and client.server_capabilities.signatureHelpProvider then require("nvchad.lsp.signature").setup(client, bufnr) end end local on_init = require("nvchad.configs.lspconfig").on_init local capabilities = require("nvchad.configs.lspconfig").capabilities local lspconfig = require "lspconfig" local servers = { "html", "cssls", "gopls" } -- lsps with default config for _, lsp in ipairs(servers) do lspconfig[lsp].setup { on_attach = on_attach, on_init = on_init, capabilities = capabilities, } end -- typescript lspconfig.tsserver.setup { on_attach = on_attach, on_init = on_init, capabilities = capabilities, }