;; Key mappings for lsp. (local opts {:noremap true :silent true}) (local mappings [[:n :gD "lua vim.lsp.buf.declaration()" {:desc :Declaration}] [:n :gd "lua vim.lsp.buf.definition()" {:desc :Definition}] [:n :gI "lua vim.lsp.buf.implementation()" {:desc :Implementation}] [:n :gr "lua vim.lsp.buf.references()" {:desc :References}] [:n :gl "lua vim.diagnostic.open_float()" {:desc :Diagnostics}] [:n :gs "lua vim.lsp.buf.signature_help()" {:desc :Signature}] [:n :gv "lua vim.lsp.buf.rename()" {:desc :Rename}] [:n :a "lua vim.lsp.buf.code_action()" {:desc "Code Action"}] [:n :e "lua vim.lsp.buf.format { async = true }" {:desc :Format}] [:n :i "lua vim.lsp.codelens.run()" {:desc "Code Lens"}] [:n :li :LspInfo {:desc "Lsp Info"}]]) (fn on-attach [bufnr] (each [_ mapping (ipairs mappings)] (match mapping [mode key cmd desc] (vim.api.nvim_buf_set_keymap bufnr mode key cmd (vim.tbl_extend :force opts desc))))) {: on-attach}