local M = { 'folke/which-key.nvim', lazy = false, -- event = "VeryLazy", } function M.config() local wk = require 'which-key' -- which-key {{{ wk.setup { plugins = { marks = true, -- shows a list of your marks on ' and ` registers = true, -- shows your registers on " in NORMAL or in INSERT mode -- the presets plugin, adds help for a bunch of default keybindings in Neovim -- No actual key bindings are created presets = { operators = true, -- adds help for operators like d, y, ... motions = true, -- adds help for motions text_objects = false, -- help for text objects triggered after entering an operator windows = true, -- default bindings on nav = true, -- misc bindings to work with windows z = true, -- bindings for folds, spelling and others prefixed with z g = true, -- bindings for prefixed with g }, }, icons = { breadcrumb = '»', -- symbol used in the command line area that shows your active key combo separator = '➜ ', -- symbol used between a key and it's label group = '+', -- symbol prepended to a group }, window = { border = 'none', -- none, single, double, shadow position = 'bottom', -- bottom, top margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left] padding = { 1, 1, 1, 1 }, -- extra window padding [top, right, bottom, left] }, 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 }, hidden = { '', '', '', '', 'call', 'lua', '^:', '^ ' }, -- hide mapping boilerplate show_help = true, -- show help message on the command line when the popup is visible } local opts = { mode = 'n', -- NORMAL mode prefix = '', buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings silent = true, -- use `silent` when creating keymaps noremap = true, -- use `noremap` when creating keymaps nowait = false, -- use `nowait` when creating keymaps } -- }}} -- leader mappings {{{ -- TODO create entire treesitter section local mappings = { ['rr'] = 'Search and replace all', ['rs'] = 'Search and replace', -- ["b"] = {"FindrBuffers", "List buffers"}, ['k'] = { 'bd!', 'Kill buffer' }, ['n'] = { 'bn', 'Next buffer' }, ['p'] = { 'bp', 'Next buffer' }, ['h'] = { 'TSBufToggle highlight', 'Enable TS highlight' }, -- ['t'] = { 'ToggleTerm direction=horizontal', 'HTerminal' }, ['T'] = { 'ToggleTerm direction=vertical', 'VTerminal' }, ['D'] = 'Type definition', ['rn'] = 'Rename', ['ca'] = 'Code action', ['1'] = { 'b 1', 'Buffer 1' }, ['2'] = { 'b 2', 'Buffer 2' }, ['3'] = { 'b 3', 'Buffer 3' }, ['4'] = { 'b 4', 'Buffer 4' }, ['5'] = { 'b 5', 'Buffer 5' }, ['g'] = { 'LazyGit', 'Lazygit' }, l = { name = 'LSP', f = 'Format', i = 'Lsp Info', I = 'Lsp Install Info', a = 'Code action', j = 'Next diagnostic', k = 'Prev diagnostic', r = 'Rename', s = 'Signature Help', q = 'Set LocList', }, [''] = { name = 'Tab', n = { 'tabnew', 'New' }, p = { 'tabp', 'Previous' }, d = { 'tabclose', 'Close' }, [''] = { 'tabnext', 'Next' }, ['1'] = { '1gt', 'Go to tab 1' }, ['2'] = { '2gt', 'Go to tab 2' }, ['3'] = { '3gt', 'Go to tab 3' }, ['4'] = { '4gt', 'Go to tab 4' }, ['5'] = { '5gt', 'Go to tab 5' }, ['6'] = { '6gt', 'Go to tab 6' }, ['7'] = { '7gt', 'Go to tab 7' }, ['8'] = { '8gt', 'Go to tab 8' }, ['9'] = { '9gt', 'Go to tab 9' }, }, w = { name = 'Window', v = { 'v', 'Vertical split' }, h = { 's', 'Horizontal split' }, a = 'Add workspace folder', r = 'Remove workspace folder', l = 'List workspace folders', }, t = { name = 'Telescope', f = { 'Telescope find_files', 'Files' }, g = { 'Telescope live_grep', 'Grep' }, b = { 'Telescope buffers', 'Buffers' }, t = { 'Telescope', 'Pickers' }, r = { 'Telescope lsp_references', 'Lsp references' }, }, -- d = { -- name = 'DAP', -- b = { "lua require'dap'.toggle_breakpoint()", 'Toggle breakpoint' }, -- c = { "lua require'dap'.continue()", 'Continue' }, -- i = { "lua require'dap'.step_into()", 'Step into' }, -- o = { "lua require'dap'.step_over()", 'Step over' }, -- O = { "lua require'dap'.step_out()", 'Step out' }, -- r = { "lua require'dap'.repl_toggle()", 'Toggle repl' }, -- l = { "lua require'dap'.run_last()", 'Run last' }, -- u = { "lua require'dapui'.toggle()", 'UI' }, -- t = { "lua require'dap'.terminate()", 'Terminate' }, -- }, } -- }}} wk.register(mappings, opts) end return M