local status_ok, which_key = pcall(require, "which-key") if not status_ok then return end which_key.setup({ plugins = { marks = false, -- shows a list of your marks on ' and ` registers = false, -- shows your registers on " in NORMAL or in INSERT mode spelling = { enabled = true, suggestions = 20, }, -- use which-key for spelling hints -- the presets plugin, adds help for a bunch of default keybindings in Neovim -- No actual key bindings are created presets = { motions = false, -- adds help for motions text_objects = false, -- help for text objects triggered after entering an operator windows = false, -- default bindings on nav = false, -- misc bindings to work with windows z = false, -- bindings for folds, spelling and others prefixed with z g = false, -- bindings for prefixed with g }, }, -- add operators that will trigger motion and text object completion -- to enable all native operators, set the preset / operators plugin above win = { border = "single", -- none, single, double, shadow position = "bottom", -- bottom, top margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left] wo = { winblend = 0, } }, layout = { height = { min = 4, max = 25 }, -- min and max height of the columns width = { min = 20, max = 50 }, -- min and max width of the columns spacing = 3, -- spacing between columns align = "left", -- align columns left, center or right }, -- hidden = { "", "", "", "", "call", "lua", "^:", "^ " }, -- hide mapping boilerplate show_help = true, -- show help message on the command line when the popup is visible show_keys = true, -- show the currently pressed key and its label as a message in the command line triggers = { { "", mode = "nxsot" }, }, -- triggers = {""} -- or specify a list manually -- disable the WhichKey popup for certain buf types and file types. -- Disabled by default for Telescope disable = { buftypes = {}, filetypes = { "TelescopePrompt" }, }, }) which_key.add({ { "", group = "Hotkeys" }, { "F", ":lua vim.lsp.buf.format() ", desc = "Format file" }, { "c", group = "Code actions" }, { "ca", "lua vim.lsp.buf.code_action()", desc = "Show code actions" }, { "d", group = "DAP" }, { "db", "DapToggleBreakpoint", desc = "Toggle breakpoint" }, { "dj", "DapStepInto", desc = "StepInto" }, { "dk", "DapStepOut", desc = "StepOut" }, { "dl", "DapStepOver", desc = "StepOver" }, { "dr", "DapContinue", desc = "DapContinue" }, { "ds", "DapTerminate", desc = "Terminate" }, { "e", ":Neotree toggle ", desc = "File tree toggle" }, { "f", group = "Find" }, { "fb", "lua require'telescope.builtin'.buffers()", desc = "Find buffer" }, { "ff", "lua require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ previewer = false }))", desc = "Find file" }, { "fw", "lua require'telescope.builtin'.live_grep()", desc = "Grep file" }, { "l", "lua vim.diagnostic.setloclist()", desc = "Show diagnostic list" }, { "o", ":Oil --float ", desc = "Oil nvim toggle" }, { "t", group = "Tabs" }, { "tn", "tabnew", desc = "New tab" }, { "tq", "tabclose", desc = "Close tab" }, } ) which_key.add({ { "g", group = "LSP Actions" }, { "gD", "lua vim.lsp.buf.declaration()", desc = "Go to declaration" }, { "gd", "lua vim.lsp.buf.definition()", desc = "Go to definition" }, { "gi", "lua vim.lsp.buf.implementation()", desc = "Show implementations" }, { "gl", "lua vim.diagnostic.open_float({ border = 'rounded' })", desc = "Show diagnostic at line" }, { "gr", "lua vim.lsp.buf.references()", desc = "Show references" }, { "grr", "lua vim.lsp.buf.rename()", desc = "Rename" }, } ) which_key.add({ { "", "lua vim.lsp.buf.signature_help()", desc = "Signature help" }, { "K", "lua vim.lsp.buf.hover()", desc = "Signature help" }, })