return function(bufnr) local map = function(from, to) vim.keymap.set('n', from, to, { noremap = true, silent = true, buffer = bufnr }) end map('gd', vim.lsp.buf.definition) map('gr', vim.lsp.buf.references) map('gi', vim.lsp.buf.implementation) map('gD', vim.lsp.buf.declaration) map('K', vim.lsp.buf.hover) map('', vim.lsp.buf.signature_help) map('wa', vim.lsp.buf.add_workspace_folder) map('wr', vim.lsp.buf.remove_workspace_folder) map('wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end) map('D', vim.lsp.buf.type_definition) map('rn', vim.lsp.buf.rename) map('ca', vim.lsp.buf.code_action) map('fm', vim.lsp.buf.formatting) end