vim.api.nvim_create_autocmd('LspAttach', { callback = function(ev) local builtin = require('telescope.builtin') vim.keymap.set('n', 'gr', builtin.lsp_references); local opts = { noremap = true, silent = false, buffer = ev.buf } vim.keymap.set('n', 'ci', vim.lsp.buf.incoming_calls, opts); vim.keymap.set('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) vim.keymap.set('n', 'ga', 'lua vim.lsp.buf.code_action()', opts) vim.keymap.set('n', 'K', 'lua vim.lsp.buf.hover()', opts) vim.keymap.set('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) vim.keymap.set('n', '', 'lua vim.lsp.buf.signature_help()', opts) vim.keymap.set('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) vim.keymap.set('n', 'rn', 'lua vim.lsp.buf.rename()', opts) vim.keymap.set('n', 'e', 'lua vim.diagnostic.open_float({scope="buffer"})', opts) vim.keymap.set('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) vim.keymap.set('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) vim.keymap.set('n', 'q', 'lua vim.lsp.diagnostic.set_loclist()', opts) vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) vim.keymap.set('n', 'fo', function() vim.lsp.buf.format { async = true } end, opts) end, })