;; Key mappings for lsp. (local mappings [[:n :gD "lua vim.lsp.buf.declaration()" {:desc :Declaration}] [:n :gd "Telescope lsp_definitions theme=dropdown" {:desc :Definition}] [:n :gI "Telescope lsp_implementations theme=dropdown" {:desc :Implementation}] [:n :gr "Telescope lsp_references theme=dropdown" {:desc :References}] [:n :gl "lua vim.diagnostic.open_float()" {:desc :Diagnostics}] [:n :gj "Telescope diagnostics theme=dropdown" {:desc "Telescope Diagnostics"}] [:n :gw "Telescope lsp_dynamic_workspace_symbols theme=dropdown" {:desc "Workspace Symbols"}] [:n :gE "Telescope lsp_type_definitions theme=dropdown" {:desc "Workspace Symbols"}] [:n :gm "lua vim.lsp.buf.signature_help()" {:desc :Signature}] [:n :gM "Telescope lsp_document_symbols theme=dropdown" {:desc "Document Symbols"}] [:n :gh "lua vim.lsp.buf.code_action()" {:desc "Code Action"}] [:n :gb "lua vim.lsp.codelens.run()" {:desc "Code Lens"}] [:n :K "lua vim.lsp.hover()" {:desc "Hover documentation"}] [:n :li :LspInfo {:desc "Lsp Info"}]]) (λ on-attach [buffer] (let [opts {:noremap true :silent true : buffer}] (each [_ mapping (ipairs mappings)] (match mapping [mode key cmd desc] (vim.keymap.set mode key cmd (vim.tbl_extend :force opts desc)))))) {: on-attach}