local M = {} local whichkey = require "which-key" local keymap = vim.api.nvim_set_keymap local buf_keymap = vim.api.nvim_buf_set_keymap local function keymappings(client, bufnr) local opts = { noremap = true, silent = true } buf_keymap(bufnr, "n", "K", "lua vim.lsp.buf.hover()", opts) keymap("n", "[d", "lua vim.diagnostic.goto_prev()", opts) keymap("n", "]d", "lua vim.diagnostic.goto_next()", opts) keymap("n", "[e", "lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})", opts) keymap("n", "]e", "lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})", opts) local keymap_l = { name = "LSP Actions", r = { "lua vim.lsp.buf.rename()", "Rename" }, a = { "lua vim.lsp.buf.code_action()", "Code Action" }, i = { "lua vim.diagnostic.open_float()", "Line Diagnostics" }, d = { "lua vim.lsp.buf.definition()", "Definition" }, D = { "lua vim.lsp.buf.declaration()", "Declaration" }, s = { "lua vim.lsp.buf.signature_help()", "Signature Help" }, I = { "lua vim.lsp.buf.implementation()", "Goto Implementation" }, t = { "lua vim.lsp.buf.type_definition()", "Goto Type Definition" }, f = { "lua vim.lsp.buf.format()", "Format Buffer"}, } whichkey.register(keymap_l, { buffer = bufnr, prefix = "c"}) end function M.setup(client, bufnr) keymappings(client, bufnr) end return M