return function() local km = vim.keymap.set local opts = {} opts.desc = "show help documentation under cursor" km("n", "lh", vim.lsp.buf.hover, opts) opts.desc = "show LSP References" km("n", "lR", ":Telescope lsp_references", opts) opts.desc = "go to declaration" km("n", "lD", "vim.lsp.buf.declaration", opts) opts.desc = "show LSP definition" km("n", "ld", ":Telescope lsp_definitions", opts) opts.desc = "Show LSP implementations" km("n", "li", ":Telescope lsp_implementations", opts) opts.desc = "Show LSP type definitions" km("n", "lt", ":Telescope lsp_type_definitions", opts) opts.desc = "See available code actions" km({ "n", "v" }, "lc", vim.lsp.buf.code_action, opts) opts.desc = "Smart rename" km("n", "lr", vim.lsp.buf.rename, opts) opts.desc = "Show buffer diagnostics" km("n", "lE", ":Telescope diagnostics bufnr=0", opts) opts.desc = "Show line diagnostics" km("n", "le", vim.diagnostic.open_float, opts) opts.desc = "Go to previous diagnostic" km("n", "lp", vim.diagnostic.goto_prev, opts) opts.desc = "Go to next diagnostic" km("n", "ln", vim.diagnostic.goto_next, opts) opts.desc = "Restart LSP" km("n", "ls", ":LspRestart", opts) end