return { "mason-org/mason-lspconfig.nvim", dependencies = { {"mason-org/mason.nvim"}, {'neovim/nvim-lspconfig'}, {'nvim-mini/mini.nvim'}, {'nvim-mini/mini.completion'}, }, config = function() require("mason").setup() require("mason-lspconfig").setup {} -- NOTE: this is meant to be backwards compatible with Neovim v0.9 --- -- Autocompletion --- --require('mini.snippets').setup() require('mini.completion').setup() --- -- Language server configuration --- -- These keymaps are the defaults in Neovim v0.10 if vim.fn.has('nvim-0.11') == 0 then -- NOTE: vim.diagnostic.goto_* methods are deprecated in v0.11 -- that's why we put these under a conditional block vim.keymap.set('n', '[d', 'lua vim.diagnostic.goto_prev()') vim.keymap.set('n', ']d', 'lua vim.diagnostic.goto_next()') vim.keymap.set('n', 'd', 'lua vim.diagnostic.open_float()') vim.keymap.set('n', '', 'lua vim.diagnostic.open_float()') end vim.api.nvim_create_autocmd('LspAttach', { callback = function(event) local bufmap = function(mode, rhs, lhs) vim.keymap.set(mode, rhs, lhs, {buffer = event.buf}) end -- These keymaps are the defaults in Neovim v0.11 bufmap('n', 'K', 'lua vim.lsp.buf.hover()') bufmap('n', 'grr', 'lua vim.lsp.buf.references()') bufmap('n', 'gri', 'lua vim.lsp.buf.implementation()') bufmap('n', 'grn', 'lua vim.lsp.buf.rename()') bufmap('n', 'gra', 'lua vim.lsp.buf.code_action()') bufmap('n', 'gO', 'lua vim.lsp.buf.document_symbol()') bufmap({'i', 's'}, '', 'lua vim.lsp.buf.signature_help()') end, }) end }