diff --git a/nvim/lua/keymappings.lua b/nvim/lua/keymappings.lua index 95d2c50..9da801f 100644 --- a/nvim/lua/keymappings.lua +++ b/nvim/lua/keymappings.lua @@ -3,176 +3,206 @@ if not _wk then return end -local nNoremap = { +wk.add({ mode = 'n', prefix = '', silent = false, noremap = true, nowait = true, -} -wk.register({ - ['w'] = { 'update', '[BUFFER] Write unsaved buffer contents' }, -}, nNoremap) + { 'w', 'update', group = 'buffers', desc = 'Write unsaved buffer contents' }, +}) -local nNoremapSilent = nNoremap -nNoremapSilent.silent = true -wk.register({ - -- Buffers +-- Buffers +wk.add({ + group = 'buffers', + mode = 'n', + prefix = '', + silent = true, + noremap = true, + nowait = true, ---- BufferLine ------ Linux - [''] = { 'BufferLineCyclePrev', '[BUFFER] Cycle to previous' }, - [''] = { 'BufferLineCycleNext', '[BUFFER] Cycle to next' }, - [''] = { 'BufferLineMovePrev', '[BUFFER] Move to previous' }, - ['>'] = { 'BufferLineMoveNext', '[BUFFER] Move to next' }, - [''] = { 'BufferLineGoToBuffer 1', '[BUFFER] Go to #1' }, - [''] = { 'BufferLineGoToBuffer 2', '[BUFFER] Go to #2' }, - [''] = { 'BufferLineGoToBuffer 3', '[BUFFER] Go to #3' }, - [''] = { 'BufferLineGoToBuffer 4', '[BUFFER] Go to #4' }, - [''] = { 'BufferLineGoToBuffer 5', '[BUFFER] Go to #5' }, - [''] = { 'BufferLineGoToBuffer 6', '[BUFFER] Go to #6' }, - [''] = { 'BufferLineGoToBuffer 7', '[BUFFER] Go to #7' }, - [''] = { 'BufferLineGoToBuffer 8', '[BUFFER] Go to #8' }, - [''] = { 'BufferLineGoToBuffer 9', '[BUFFER] Go to #9' }, - [''] = { 'Bdelete', '[BUFFER] Delete' }, + { '', 'BufferLineCyclePrev', desc = 'Cycle to previous' }, + { '', 'BufferLineCycleNext', desc = 'Cycle to next' }, + { '', 'BufferLineMovePrev', desc = 'Move to previous' }, + { '>', 'BufferLineMoveNext', desc = 'Move to next' }, + { '', 'BufferLineGoToBuffer 1', desc = 'Go to #1' }, + { '', 'BufferLineGoToBuffer 2', desc = 'Go to #2' }, + { '', 'BufferLineGoToBuffer 3', desc = 'Go to #3' }, + { '', 'BufferLineGoToBuffer 4', desc = 'Go to #4' }, + { '', 'BufferLineGoToBuffer 5', desc = 'Go to #5' }, + { '', 'BufferLineGoToBuffer 6', desc = 'Go to #6' }, + { '', 'BufferLineGoToBuffer 7', desc = 'Go to #7' }, + { '', 'BufferLineGoToBuffer 8', desc = 'Go to #8' }, + { '', 'BufferLineGoToBuffer 9', desc = 'Go to #9' }, + { '', 'Bdelete', desc = 'Delete' }, ------ Mac - ['≤'] = { 'BufferLineCyclePrev', '[BUFFER] Cycle to previous' }, - ['≥'] = { 'BufferLineCycleNext', '[BUFFER] Cycle to next' }, - ['¯'] = { 'BufferLineMovePrev', '[BUFFER] Move to previous' }, - ['˘'] = { 'BufferLineMoveNext', '[BUFFER] Move to next' }, - ['¡'] = { 'BufferLineGoToBuffer 1', '[BUFFER] Go to #1' }, - ['™'] = { 'BufferLineGoToBuffer 2', '[BUFFER] Go to #2' }, - ['£'] = { 'BufferLineGoToBuffer 3', '[BUFFER] Go to #3' }, - ['€'] = { 'BufferLineGoToBuffer 4', '[BUFFER] Go to #4' }, - ['∞'] = { 'BufferLineGoToBuffer 5', '[BUFFER] Go to #5' }, - ['§'] = { 'BufferLineGoToBuffer 6', '[BUFFER] Go to #6' }, - ['¶'] = { 'BufferLineGoToBuffer 7', '[BUFFER] Go to #7' }, - ['•'] = { 'BufferLineGoToBuffer 8', '[BUFFER] Go to #8' }, - ['ª'] = { 'BufferLineGoToBuffer 9', '[BUFFER] Go to #9' }, - ['ç'] = { 'Bdelete', '[BUFFER] Delete' }, + { '≤', 'BufferLineCyclePrev', desc = 'Cycle to previous' }, + { '≥', 'BufferLineCycleNext', desc = 'Cycle to next' }, + { '¯', 'BufferLineMovePrev', desc = 'Move to previous' }, + { '˘', 'BufferLineMoveNext', desc = 'Move to next' }, + { '¡', 'BufferLineGoToBuffer 1', desc = 'Go to #1' }, + { '™', 'BufferLineGoToBuffer 2', desc = 'Go to #2' }, + { '£', 'BufferLineGoToBuffer 3', desc = 'Go to #3' }, + { '€', 'BufferLineGoToBuffer 4', desc = 'Go to #4' }, + { '∞', 'BufferLineGoToBuffer 5', desc = 'Go to #5' }, + { '§', 'BufferLineGoToBuffer 6', desc = 'Go to #6' }, + { '¶', 'BufferLineGoToBuffer 7', desc = 'Go to #7' }, + { '•', 'BufferLineGoToBuffer 8', desc = 'Go to #8' }, + { 'ª', 'BufferLineGoToBuffer 9', desc = 'Go to #9' }, + { 'ç', 'Bdelete', desc = 'Delete' }, +}) - -- LSP - ['ca'] = { 'Lspsaga code_action', '[LSP] Code Action' }, - ['fm'] = { 'lua vim.lsp.buf.format()', '[LSP] Format' }, - ['gd'] = { 'lua vim.lsp.buf.definition()', '[LSP] Go to definition' }, - ['K'] = { 'Lspsaga hover_doc', '[LSP] Hover documentation' }, - [''] = { 'lua vim.lsp.buf.signature_help()', '[LSP] Get signature help' }, - ['rn'] = { 'Lspsaga rename', '[LSP] Rename' }, - ['gr'] = { 'lua vim.lsp.buf.references()', '[LSP] Get references' }, - ['[d'] = { 'lua vim.diagnostic.goto_prev()', '[LSP] Go to previous diagnostic' }, - [']d'] = { 'lua vim.diagnostic.goto_next()', '[LSP] Go to next diagnostic' }, +-- LSP +wk.add({ + group = 'lsp', + mode = 'n', + prefix = '', + silent = true, + noremap = true, + nowait = true, + { 'ca', 'Lspsaga code_action', desc = 'Code Action' }, + { 'fm', 'lua vim.lsp.buf.format()', desc = 'Format' }, + { 'gd', 'lua vim.lsp.buf.definition()', desc = 'Go to definition' }, + { 'K', 'Lspsaga hover_doc', desc = 'Hover documentation' }, + { '', 'lua vim.lsp.buf.signature_help()', desc = 'Get signature help' }, + { 'rn', 'Lspsaga rename', desc = 'Rename' }, + { 'gr', 'lua vim.lsp.buf.references()', desc = 'Get references' }, + { '[d', 'lua vim.diagnostic.goto_prev()', desc = 'Go to previous diagnostic' }, + { ']d', 'lua vim.diagnostic.goto_next()', desc = 'Go to next diagnostic' }, + { 'so', 'Lspsaga outline', desc = '[LSP] Outline symbols' }, +}) - -- NvimTree - [''] = { 'NvimTreeToggle', '[NVIMTREE] Toggle' }, +-- NvimTree +wk.add({ + group = 'nvimtree', + { '', 'NvimTreeToggle', desc = 'Toggle' }, +}) - -- Telescope - ['f'] = { - name = '[TELESCOPE]', - f = { - [[lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown({layout_config={width=0.5}}))]], - '[TELESCOPE] Find files (ignore=true)', - }, - t = { [[lua require('telescope.builtin').live_grep()]], '[TELESCOPE] Grep files (ignore=true)' }, - T = { - [[lua require('plugins.configs.telescope').live_grep_with_file_type ()]], - '[TELESCOPE] Grep files by file type', - }, - b = { [[lua require('telescope').extensions.file_browser.file_browser()]], '[TELESCOPE] Buffers' }, - h = { [[lua require('telescope.builtin').help_tags()]], '[TELESCOPE] Help tags' }, - r = { [[lua require('telescope.builtin').lsp_references()]], '[TELESCOPE] LSP references' }, +-- Telescope +wk.add({ + group = 'telescope', + { 'F', group = '[TELESCOPE] ignore=false' }, + { + 'FF', + "lua require('plugins.configs.telescope').find_files_no_ignore()", + desc = '[TELESCOPE] Find files (ignore=false)', }, - ['F'] = { - name = '[TELESCOPE] ignore=false', - F = { - [[lua require('plugins.configs.telescope').find_files_no_ignore()]], - '[TELESCOPE] Find files (ignore=false)', - }, - T = { [[lua require('plugins.configs.telescope').live_grep()]], '[TELESCOPE] Grep files (ignore=false)' }, + { + 'FT', + "lua require('plugins.configs.telescope').live_grep()", + desc = '[TELESCOPE] Grep files (ignore=false)', }, - ['fg'] = { - name = '[TELESCOPE] Git', - s = { - [[lua require('telescope.builtin').git_status(require('telescope.themes').get_dropdown({layout_config={width=0.75}}))]], - '[TELESCOPE] Git status', - }, - b = { - [[lua require('telescope.builtin').git_branches(require('telescope.themes').get_ivy({}))]], - '[TELESCOPE] Git branches', - }, - r = { 'Telescope gh run', '[TELESCOPE] GitHub view workflow runs' }, + { 'f', group = '[TELESCOPE]' }, + { + 'fT', + "lua require('plugins.configs.telescope').live_grep_with_file_type ()", + desc = '[TELESCOPE] Grep files by file type', }, - ['fl'] = { - name = '[TELESCOPE] LSP', - w = { - [[lua require('plugins.configs.telescope').lsp_workspace_symbols()]], - '[TELESCOPE] LSP workspace symbols', - }, + { + 'fb', + "lua require('telescope').extensions.file_browser.file_browser()", + desc = '[TELESCOPE] Buffers', }, - - -- Trouble - ['x'] = { - name = '[TROUBLE]', - x = { 'Trouble toggle diagnostics', '[TROUBLE] Toggle' }, - w = { 'Trouble workspace_diagnostics', '[TROUBLE] Workspace diagnostics' }, - d = { 'Trouble document_diagnostics', '[TROUBLE] Document diagnostics' }, - l = { 'Trouble loclist', '[TROUBLE] Loclist' }, - q = { 'Trouble quickfix', '[TROUBLE] Quickfix' }, - r = { 'Trouble lsp_references', '[TROUBLE] References' }, + { + 'ff', + "lua require('telescope.builtin').find_files(require('telescope.themes').get_dropdown({layout_config={width=0.5}}))", + desc = '[TELESCOPE] Find files (ignore=true)', }, - - -- Misc - ['+'] = { '', 'Increment number' }, - ['-'] = { '', 'Decrement number' }, - - -- Git/Fugitive - ['g'] = { - name = '[GIT]', - da = { 'vertical Git diff', '[GIT] Diff all' }, - df = { 'Gvdiffsplit', '[GIT] Diff current file' }, - s = { 'Git', '[GIT] Status' }, - h = { 'diffget //3' }, - l = { 'diffget //2' }, - cc = { 'Git commit', '[GIT] Commit' }, - ca = { 'Git commit -a', '[GIT] Commit all tracked files' }, - af = { "Git add % echo 'Staged ' . expand('%')", '[GIT] Stage current file' }, - aa = { "Git add . echo 'Staged tracked files'", '[GIT] Stage tracked files' }, - aA = { - "Git add -A echo 'Staged tracked and untracked files'", - '[GIT] Stage tracked and untracked files', - }, - p = { 'Git push', '[GIT] Push' }, - P = { 'Git push -f', '[GIT] Push (force)' }, - bn = { "lua require('utils').git_branch_new()", '[GIT] Create new branch' }, - br = { "lua require('utils').git_branch_rename()", '[GIT] Rename current branch' }, - bf = { - "lua vim.api.nvim_command('!gh browse ' .. vim.fn.expand('%') .. ':' .. vim.api.nvim_win_get_cursor(0)[1])", - }, - ['='] = { - "Git push -u origin @ | :execute '!gh pr create -f'", - '[GIT] Push new branch, create a PR', - }, - mpr = { '!gh pr merge -md', '[GIT] Merge PR and delete branch' }, - vpr = { '!gh pr view -w', '[GIT] View PR in browser' }, - frh = { 'Git fetch --all --prune | Git reset --hard "@{u}"', '[GIT] Fetch latest changes and reset state' }, + { 'fg', group = '[TELESCOPE] Git' }, + { + 'fgb', + "lua require('telescope.builtin').git_branches(require('telescope.themes').get_ivy({}))", + desc = '[TELESCOPE] Git branches', + }, + { 'fgr', 'Telescope gh run', desc = '[TELESCOPE] GitHub view workflow runs' }, + { + 'fgs', + "lua require('telescope.builtin').git_status(require('telescope.themes').get_dropdown({layout_config={width=0.75}}))", + desc = '[TELESCOPE] Git status', + }, + { 'fh', "lua require('telescope.builtin').help_tags()", desc = '[TELESCOPE] Help tags' }, + { 'fl', group = '[TELESCOPE] LSP' }, + { + 'flw', + "lua require('plugins.configs.telescope').lsp_workspace_symbols()", + desc = '[TELESCOPE] LSP workspace symbols', }, + { 'fr', "lua require('telescope.builtin').lsp_references()", desc = '[TELESCOPE] LSP references' }, + { + 'ft', + "lua require('telescope.builtin').live_grep()", + desc = '[TELESCOPE] Grep files (ignore=true)', + }, +}) - -- Symbols Outline - ['so'] = { 'LSoutlineToggle', '[LSP] Outline symbols' }, +-- Misc +wk.add({ + group = 'misc', + { '+', '', desc = 'Increment number' }, + { '-', '', desc = 'Decrement number' }, + { '', 'm .+1==', desc = '[LINES] Move line up' }, + { '', 'm .-2==', desc = '[LINES] Move line down' }, + { '', 'nohls', desc = '[LINES] Clear highlights' }, + { 'l', group = '[LUA]' }, + { + 'lrk', + "source ~/.config/nvim/lua/keymappings.lua | echo 'Keymaps reloaded'", + desc = '[LUA] Reload keymaps', + }, +}) - -- Lua stuff - ['l'] = { - name = '[LUA]', - rk = { "source ~/.config/nvim/lua/keymappings.lua | echo 'Keymaps reloaded'", '[LUA] Reload keymaps' }, +wk.add({ + { 'g', group = '[GIT]' }, + { + 'g=', + "Git push -u origin @ | :execute '!gh pr create -f'", + desc = '[GIT] Push new branch, create a PR', }, + { 'gP', 'Git push -f', desc = '[GIT] Push (force)' }, + { + 'gaA', + "Git add -A echo 'Staged tracked and untracked files'", + desc = '[GIT] Stage tracked and untracked files', + }, + { 'gaa', "Git add . echo 'Staged tracked files'", desc = '[GIT] Stage tracked files' }, + { 'gaf', "Git add % echo 'Staged ' . expand('%')", desc = '[GIT] Stage current file' }, + { + 'gbf', + desc = "lua vim.api.nvim_command('!gh browse ' .. vim.fn.expand('%') .. ':' .. vim.api.nvim_win_get_cursor(0)[1])", + }, + { 'gbn', "lua require('utils').git_branch_new()", desc = '[GIT] Create new branch' }, + { 'gbr', "lua require('utils').git_branch_rename()", desc = '[GIT] Rename current branch' }, + { 'gca', 'Git commit -a', desc = '[GIT] Commit all tracked files' }, + { 'gcc', 'Git commit', desc = '[GIT] Commit' }, + { 'gda', 'vertical Git diff', desc = '[GIT] Diff all' }, + { 'gdf', 'Gvdiffsplit', desc = '[GIT] Diff current file' }, + { + 'gfrh', + 'Git fetch --all --prune | Git reset --hard "@{u}"', + desc = '[GIT] Fetch latest changes and reset state', + }, + { 'gh', desc = 'diffget //3' }, + { 'gl', desc = 'diffget //2' }, + { 'gmpr', '!gh pr merge -md', desc = '[GIT] Merge PR and delete branch' }, + { 'gp', 'Git push', desc = '[GIT] Push' }, + { 'gs', 'Git', desc = '[GIT] Status' }, + { 'gvpr', '!gh pr view -w', desc = '[GIT] View PR in browser' }, +}) - -- Lines - [''] = { 'm .+1==', '[LINES] Move line up' }, - [''] = { 'm .-2==', '[LINES] Move line down' }, - [''] = { 'nohls', '[LINES] Clear highlights' }, -}, nNoremapSilent) +wk.add({ + { 'x', group = '[TROUBLE]' }, + { 'xd', 'Trouble document_diagnostics', desc = '[TROUBLE] Document diagnostics' }, + { 'xl', 'Trouble loclist', desc = '[TROUBLE] Loclist' }, + { 'xq', 'Trouble quickfix', desc = '[TROUBLE] Quickfix' }, + { 'xr', 'Trouble lsp_references', desc = '[TROUBLE] References' }, + { 'xw', 'Trouble workspace_diagnostics', desc = '[TROUBLE] Workspace diagnostics' }, + { 'xx', 'Trouble toggle diagnostics', desc = '[TROUBLE] Toggle' }, +}) wk.setup({}) ---- Lines ---- TODO: Migrate to Lua -vim.api.nvim_command([[vnoremap J :m '>+1gv=gv]]) vim.api.nvim_command([[vnoremap K :m '<-2gv=gv]]) +vim.api.nvim_command([[vnoremap J :m '>+1gv=gv]])