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 = { operators = false, -- adds help for operators like d, y, ... 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 }, }, preset = "classic", keys = { scroll_down = "", -- binding to scroll down inside the popup scroll_up = "", -- binding to scroll up inside the popup }, win = { -- border = "single", -- none, single, double, shadow 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 }, filter = function(mapping) -- enable this to hide mappings for which you didn't specify a label return mapping.desc end, 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 = "nxso" }, }, -- 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" }, { "o", ":Oil --float ", desc = "Oil nvim toggle" }, { "e", ":Neotree toggle ", desc = "File tree toggle" }, { "F", ":lua vim.lsp.buf.format() ", desc = "Format file" }, }) which_key.add({ { "f", group = "Find" }, { "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" }, { "fb", "lua require'telescope.builtin'.buffers()", desc = "Find buffer" }, { "fh", "lua require'telescope.builtin'.resume()", desc = "Resume last search" }, }) which_key.add({ { "c", group = "Code actions" }, { "ca", "lua vim.lsp.buf.code_action()", desc = "Show code actions" }, }) which_key.add({ { "l", "lua vim.diagnostic.setloclist()", desc = "Show diagnostic list" }, }) which_key.add({ { "d", group = "Dap" }, { "dr", "DapContinue", desc = "Continue" }, { "dj", "DapStepInto", desc = "Step into" }, { "dl", "DapStepOver", desc = "Step over" }, { "dk", "DapStepOut", desc = "Step out" }, { "db", "DapToggleBreakpoint", desc = "Toggle breakpoint" }, { "ds", "DapTerminate", desc = "Terminate" }, }) which_key.add({ { "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" }, { "grr", "lua vim.lsp.buf.rename()", desc = "Rename" }, { "gr", "lua vim.lsp.buf.references()", desc = "Show references" }, { "gl", "lua vim.diagnostic.open_float({ border = 'rounded' })", desc = "Show diagnostic at line" }, }) which_key.add({ { "", "lua vim.lsp.buf.signature_help()", desc = "Signature help" }, { "K", "lua vim.lsp.buf.hover()", desc = "Signature help" }, })