return { "mason-org/mason-lspconfig.nvim", opts = {}, dependencies = { { "mason-org/mason.nvim", opts = {} }, { "neovim/nvim-lspconfig", dependencies = "folke/which-key.nvim", config = function() require('which-key').add({ 'lI', ':LspInstall ', desc = "Install Lsp" }) vim.api.nvim_create_autocmd('LspAttach', { group = vim.api.nvim_create_augroup('UserLspConfig', {}), callback = function(ev) -- Enable completion triggered by vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' -- Buffer local mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions local opts = { buffer = ev.buf } require('which-key').add({ { "l", group = "lsp" }, { 'le', vim.diagnostic.open_float, desc = "Explanation" }, { 'ln', vim.diagnostic.goto_next, desc = "Next Issue" }, { 'lN', vim.diagnostic.goto_prev, desc = "Previous Issue" }, { 'lj', vim.diagnostic.setloclist, desc = "Diagnostic list" }, { 'lD', vim.lsp.buf.declaration, opts, desc = "Declaration" }, { 'ld', vim.lsp.buf.definition, opts, desc = "Definition" }, { 'lk', vim.lsp.buf.hover, opts, desc = "Hover" }, { 'li', vim.lsp.buf.implementation, opts, desc = "Implmentation" }, { 'lt', vim.lsp.buf.type_definition, opts, desc = "Type" }, { 'lR', vim.lsp.buf.rename, opts, desc = "Rename" }, { 'la', vim.lsp.buf.code_action, opts, desc = "Actions" }, { 'lr', vim.lsp.buf.references, opts, desc = "References" }, { 'lf', function() vim.lsp.buf.format { async = true } end, opts }, }) end, }) end }, } }