local wk = require("which-key") local M = {} function M.setup(client, buffer) local cap = client.server_capabilities local keymap = { buffer = buffer, [""] = { c = { name = "+code", { cond = client.name == "tsserver", o = { ":TypescriptOrganizeImports", "Organize Imports" }, R = { ":TypescriptRenameFile", "Rename File" }, }, r = { function() require("inc_rename") return ":IncRename " .. vim.fn.expand("") end, "Rename", cond = cap.renameProvider, expr = true, }, a = { { vim.lsp.buf.code_action, "Code Action" }, { "lua vim.lsp.buf.code_action()", "Code Action", mode = "v" }, }, f = { { require("config.plugins.lsp.formatting").format, "Format Document", cond = cap.documentFormatting, }, { require("config.plugins.lsp.formatting").format, "Format Range", cond = cap.documentRangeFormatting, mode = "v", }, }, d = { vim.diagnostic.open_float, "Line Diagnostics" }, l = { name = "+lsp", i = { "LspInfo", "Lsp Info" }, a = { "lua vim.lsp.buf.add_workspace_folder()", "Add Folder" }, r = { "lua vim.lsp.buf.remove_workspace_folder()", "Remove Folder" }, l = { "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))", "List Folders" }, }, }, x = { d = { "Telescope diagnostics", "Search Diagnostics" }, }, }, g = { name = "+goto", d = { "Telescope lsp_definitions", "Goto Definition" }, r = { "Telescope lsp_references", "References" }, R = { "Trouble lsp_references", "Trouble References" }, D = { "Telescope lsp_declarations", "Goto Declaration" }, I = { "Telescope lsp_implementations", "Goto Implementation" }, t = { "Telescope lsp_type_definitions", "Goto Type Definition" }, }, [""] = { "lua vim.lsp.buf.signature_help()", "Signature Help", mode = { "n", "i" } }, ["K"] = { "lua vim.lsp.buf.hover()", "Hover" }, ["[d"] = { "lua vim.diagnostic.goto_prev()", "Next Diagnostic" }, ["]d"] = { "lua vim.diagnostic.goto_next()", "Prev Diagnostic" }, ["[e"] = { "lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})", "Next Error" }, ["]e"] = { "lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})", "Prev Error" }, ["[w"] = { "lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.WARNING})", "Next Warning", }, ["]w"] = { "lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.WARNING})", "Prev Warning", }, } wk.register(keymap) end return M