return function(client, bufnr) vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") client.resolved_capabilities.document_formatting = false client.resolved_capabilities.document_range_formatting = false local function buf_map(...) vim.api.nvim_buf_set_keymap(bufnr, "n", ...) end local opts = { noremap = true, silent = true } buf_map("K", "lua vim.lsp.buf.hover()", opts) buf_map("gd", "lua vim.lsp.buf.definition()", opts) buf_map("gD", "lua vim.lsp.buf.declaration()", opts) buf_map("gr", "lua vim.lsp.buf.references()", opts) buf_map("gI", "lua vim.lsp.buf.implementation()", opts) buf_map("gs", "lua vim.lsp.buf.signature_help()", opts) buf_map("gl", "lua vim.lsp.diagnostic.show_line_diagnostics()", opts) buf_map("la", "Telescope lsp_code_actions", opts) buf_map("lA", "lua vim.lsp.buf.range_code_action()", opts) buf_map("ld", "TroubleToggle", opts) buf_map("lr", "lua vim.lsp.buf.rename()", opts) buf_map("lf", "lua vim.lsp.buf.formatting()", opts) buf_map("ls", "Telescope lsp_document_symbols", opts) buf_map("li", "LspInfo", opts) buf_map("lR", "LspRestart", opts) end