diff --git a/lua/plugins/lock.json b/lua/plugins/lock.json index dd097ae..413c251 100644 --- a/lua/plugins/lock.json +++ b/lua/plugins/lock.json @@ -12,19 +12,19 @@ "co-author.nvim": { "branch": "main", "commit": "3beddbbd5fdf3121921fc7b28fd731cffc70f952" }, "codeium.vim": { "branch": "main", "commit": "e0342fde9474fdd0a36ff9692fe0031b7611a19f" }, "compiler.nvim": { "branch": "main", "commit": "892c1aac059b7df16dc636eea9e34be53f53ff96" }, - "conform.nvim": { "branch": "master", "commit": "310e2e95a4f832163f3f7a9fedebb1a4afc0db69" }, + "conform.nvim": { "branch": "master", "commit": "acc7d93f4a080fec587a99fcb36cffa29adc4bad" }, "dashboard-nvim": { "branch": "master", "commit": "fabf5feec96185817c732d47d363f34034212685" }, "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, "flash.nvim": { "branch": "main", "commit": "25ba3f4d1e0b080213b39518ebcfbb693a23c957" }, "flutter-tools.nvim": { "branch": "main", "commit": "5aa227fa083fd740184b55b5220dfabc24a25cc7" }, - "fortune.nvim": { "branch": "master", "commit": "470bcb2292f4fba68724cddc39b07c96e5e3e732" }, + "fortune.nvim": { "branch": "master", "commit": "29a99fbf887a2d48693f1eaa1893f84cde60af54" }, "friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" }, "gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, "gitsigns.nvim": { "branch": "main", "commit": "f4928ba14eb6c667786ac7d69927f6aee6719f1e" }, "hardtime.nvim": { "branch": "main", "commit": "9a4e24fb40482dc85a93bf6cf344a030b9bf9a39" }, "harpoon": { "branch": "harpoon2", "commit": "0378a6c428a0bed6a2781d459d7943843f374bce" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, - "lazy.nvim": { "branch": "main", "commit": "d731a6b005fd239e85e555bd57362382f6c1e461" }, + "lazy.nvim": { "branch": "main", "commit": "8f6225751138329da339eb6554d40158768d23ff" }, "lazydev.nvim": { "branch": "main", "commit": "02f1055a777264d4b65896051ec28d0f322f7932" }, "live-server.nvim": { "branch": "main", "commit": "f6f00a3f541251f0320910bb0d03c4ae14ee6d10" }, "lsp_lines.nvim": { "branch": "main", "commit": "dbfd8e96ec2696e1ceedcd23fd70e842256e3dea" }, @@ -42,20 +42,20 @@ "neotest-jest": { "branch": "main", "commit": "514fd4eae7da15fd409133086bb8e029b65ac43f" }, "neotest-rspec": { "branch": "main", "commit": "48573d5882cbe8d8bcd3b735d9ee7705168b1b87" }, "nerdy.nvim": { "branch": "main", "commit": "b467d6609b78d6a5f1e12cbc08fcc1ac87af20f5" }, - "noice.nvim": { "branch": "main", "commit": "90844cfdf8c1d2edcb2e56c21e2724e7c6ea4c41" }, - "none-ls.nvim": { "branch": "main", "commit": "2870f66b1cb263f6e0bfffdb089739b874343a3a" }, + "noice.nvim": { "branch": "main", "commit": "daa5f6908e97c89ca3e9861e03bdf356ea48cc72" }, + "none-ls.nvim": { "branch": "main", "commit": "8b5d4170a602d7b257704eef77b0539ddfd02589" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, "nvim-cmp": { "branch": "main", "commit": "d818fd0624205b34e14888358037fb6f5dc51234" }, - "nvim-dap": { "branch": "master", "commit": "6f79b822997f2e8a789c6034e147d42bc6706770" }, + "nvim-dap": { "branch": "master", "commit": "bc03b83c94d0375145ff5ac6a6dcf28c1241e06f" }, "nvim-dap-ui": { "branch": "master", "commit": "a5606bc5958db86f8d92803bea7400ee26a8d7e4" }, - "nvim-lspconfig": { "branch": "master", "commit": "01e08d4bf1c35e5126b2ad5209725e4c552289ab" }, + "nvim-lspconfig": { "branch": "master", "commit": "df9c116cbcf0aa7e58f2b36b0296fa687e87f36f" }, "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" }, "nvim-notify": { "branch": "master", "commit": "d333b6f167900f6d9d42a59005d82919830626bf" }, "nvim-spectre": { "branch": "master", "commit": "9a28f926d3371b7ef02243cbbb653a0478d06e31" }, "nvim-spider": { "branch": "main", "commit": "c0f757f63da340636ff2be53e39eabc42f5fa727" }, "nvim-tree.lua": { "branch": "master", "commit": "f9ff00bc06d7cb70548a3847d7a2a05e928bc988" }, - "nvim-treesitter": { "branch": "master", "commit": "7a38515741768c0a0712253de4ce64454cb24c1a" }, + "nvim-treesitter": { "branch": "master", "commit": "874b99065b4b00b84b0ca5fa63490c93728a45ab" }, "nvim-treesitter-endwise": { "branch": "master", "commit": "8b34305ffc28bd75a22f5a0a9928ee726a85c9a6" }, "nvim-treesitter-refactor": { "branch": "master", "commit": "65ad2eca822dfaec2a3603119ec3cc8826a7859e" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" }, @@ -85,6 +85,6 @@ "url-open": { "branch": "main", "commit": "9f8f4a56ac709f26aa17d8ef921b272bf2262a30" }, "vim-fugitive": { "branch": "master", "commit": "8c8cdf4405cb8bdb70dd9812a33bb52363a87dbc" }, "vim-rails": { "branch": "master", "commit": "2fba7907f585819a8653f0bc7dd7f437a822d9c6" }, - "which-key.nvim": { "branch": "main", "commit": "4390015b265adf69cf3e344cc13167539f732b2f" }, + "which-key.nvim": { "branch": "main", "commit": "439d1247cbfed8ee46d6c9a5edbfad6b4c968e06" }, "zen-mode.nvim": { "branch": "main", "commit": "a31cf7113db34646ca320f8c2df22cf1fbfc6f2a" } } diff --git a/lua/plugins/tools/which-key.lua b/lua/plugins/tools/which-key.lua index 0c5b0f9..eee7d85 100644 --- a/lua/plugins/tools/which-key.lua +++ b/lua/plugins/tools/which-key.lua @@ -2,7 +2,7 @@ local which_key = require('which-key') local icons = require('lib.icons') local setup = { - preset = 'modern', + preset = 'modern', plugins = { marks = true, registers = true, @@ -29,11 +29,7 @@ local setup = { }, rules = false, -- enable auto icon rules }, - popup_mappings = { - scroll_down = '', - scroll_up = '', - }, - win = { + win = { no_overlap = true, border = 'rounded', width = 0.8, @@ -47,550 +43,473 @@ local setup = { }, }, layout = { - height = { min = 5, max = 26 }, - width = { min = 20, max = 50 }, + width = { min = 20 }, spacing = 6, align = 'center', }, - ignore_missing = false, - hidden = { '', '', '', '', '^:', '^ ', '^call ', '^lua ' }, show_help = false, show_keys = true, - triggers = 'true', + triggers = true, } -local i = { - [' '] = 'Whitespace', - ['"'] = 'Balanced "', - ["'"] = "Balanced '", - ['`'] = 'Balanced `', - ['('] = 'Balanced (', - [')'] = 'Balanced ) including white-space', - ['>'] = 'Balanced > including white-space', - [''] = 'Balanced <', - [']'] = 'Balanced ] including white-space', - ['['] = 'Balanced [', - ['}'] = 'Balanced } including white-space', - ['{'] = 'Balanced {', - ['?'] = 'User Prompt', - _ = 'Underscore', - a = 'Argument', - b = 'Balanced ), ], }', - c = 'Class', - f = 'Function', - o = 'Block, conditional, loop', - q = 'Quote `, ", \'', - t = 'Tag', -} - -local a = vim.deepcopy(i) -for k, v in pairs(a) do - a[k] = v:gsub(' including.*', '') -end - -local ic = vim.deepcopy(i) -local ac = vim.deepcopy(a) - -for key, name in pairs({ n = 'Next', l = 'Last' }) do - i[key] = vim.tbl_extend('force', { name = 'Inside ' .. name .. ' textobject' }, ic) - a[key] = vim.tbl_extend('force', { name = 'Around ' .. name .. ' textobject' }, ac) -end - -local opts = { +local n_mappings = { mode = 'n', - prefix = '', - buffer = nil, - silent = true, - noremap = true, - nowait = true, + { 'b', group = ' Debug' }, + { 'bO', 'DapStepOut', desc = 'Out' }, + { 'bR', 'DapRestartFrame', desc = 'Restart Frame' }, + { 'bb', 'DapToggleBreakpoint', desc = 'Breakpoint' }, + { 'bc', 'DapContinue', desc = 'Continue' }, + { 'bi', 'DapStepInto', desc = 'Into' }, + { 'bl', "lua require'dap'.run_last()", desc = 'Last' }, + { 'bo', 'DapStepOver', desc = 'Over' }, + { 'br', 'DapToggleRepl', desc = 'Repl' }, + { 'bt', 'DapUIToggle', desc = 'Debugger' }, + { 'bx', 'DapTerminate', desc = 'Exit' }, + + { 'c', group = ' Code' }, + { 'cF', 'retab', desc = 'Fix Tabs' }, + { 'cP', 'CccConvert', desc = 'Convert Color' }, + { 'cR', 'ReloadConfig', desc = 'Reload Configs' }, + { 'cc', 'CccHighlighterToggle', desc = 'Highlight Colors' }, + { 'cd', 'RootDir', desc = 'Root Directory' }, + { 'cf', 'lua vim.lsp.buf.format({async = true})', desc = 'Format File' }, + { 'ch', 'Hardtime toggle', desc = 'Hardtime' }, + { 'cl', ':g/^\\s*$/d', desc = 'Clean Empty Lines' }, + { 'cm', 'MarkdownPreviewToggle', desc = 'Markdown Preview' }, + { 'cn', 'Telescope notify', desc = 'Notifications' }, + { 'co', 'Dashboard', desc = 'Dashboard' }, + { 'cp', 'CccPick', desc = 'Pick Color' }, + { 'cr', 'Telescope reloader', desc = 'Reload Module' }, + { 'cx', '%SnipRun', desc = 'Run File' }, + + { 'd', group = ' Database' }, + { 'dS', 'lua require("dbee").store("json", "buffer", { extra_arg = 0 })', desc = 'To JSON' }, + { 'db', 'DBToggle', desc = 'DB Explorer' }, + { 'dj', 'lua require("dbee").next()', desc = 'DB Next' }, + { 'dk', 'lua require("dbee").prev()', desc = 'DB Prev' }, + { 'ds', 'lua require("dbee").store("csv", "buffer", { extra_arg = 0 })', desc = 'To CSV' }, + { 'dt', 'lua require("dbee").store("table", "buffer", { extra_arg = 0 })', desc = 'To Table' }, + + { 'e', group = ' Edit' }, + { 'ea', 'b#', desc = 'Alternate File' }, + { 'ec', 'e $MYVIMRC', desc = 'Config' }, + { + 'ed', + 'lua require("telescope.builtin").find_files({cwd = vim.fn.stdpath("config")})', + desc = 'Config Dir', + }, + { 'ee', 'NvimTreeToggle', desc = 'Explorer' }, + { 'ef', 'gf', desc = 'File Under Cursor' }, + { 'el', 'e ~/.config/shell/local.sh', desc = 'Local Config' }, + { 'em', 'e README.md', desc = 'Readme' }, + { 'en', 'enew', desc = 'New File' }, + { 'ez', 'e $ZDOTDIR/.zshrc', desc = 'Zsh Config' }, + + { 'f', group = ' Find' }, + { 'fa', 'lua require("telescope").extensions.menufacture.find_files()', desc = 'All Files' }, + { 'fb', 'Telescope buffers', desc = 'Buffers' }, + { 'fc', 'Telescope git_bcommits', desc = 'File Commits' }, + { 'ff', 'lua require("telescope").extensions.menufacture.git_files()', desc = 'Find files' }, + { 'fg', 'lua require("telescope").extensions.menufacture.live_grep()', desc = 'Find Text' }, + { 'fl', 'Telescope loclist', desc = 'Location List' }, + { 'fm', 'Telescope git_status', desc = 'Modified files' }, + { 'fo', 'Telescope live_grep grep_open_files=true', desc = 'Find in Open Files' }, + { 'fp', 'Telescope resume', desc = 'Last Search' }, + { 'fq', 'Telescope quickfix', desc = 'Quickfix' }, + { 'fr', 'Telescope oldfiles', desc = 'Recent Files' }, + { 'fs', 'Telescope current_buffer_fuzzy_find', desc = 'Fuzzy Find in File' }, + { 'ft', 'Telescope', desc = 'Panel' }, + { 'fu', 'Telescope undo', desc = 'Undo History' }, + { 'fw', 'lua require("telescope").extensions.menufacture.grep_string()', desc = 'Find Word' }, + + { 'g', group = ' Git' }, + { 'gA', 'Gitsigns stage_buffer', desc = 'Stage Buffer' }, + { 'gC', 'CoAuthor', desc = 'Co-Authors' }, + { 'gP', 'Git push', desc = 'Push' }, + { 'gR', 'Gitsigns reset_buffer', desc = 'Reset Buffer' }, + { 'gS', 'Telescope git_stash', desc = 'Stashed Changes' }, + { 'ga', 'Gitsigns stage_hunk', desc = 'Stage Hunk' }, + { 'gb', "lua require('gitsigns').blame_line({full = true})", desc = 'Blame' }, + { 'gc', 'Telescope git_commits', desc = 'Find Commits' }, + { 'gd', 'Gitsigns diffthis HEAD', desc = 'Diff' }, + { 'gf', 'Git', desc = 'Fugitive Panel' }, + { 'gg', 'Fterm lazygit', desc = 'Lazygit' }, + { 'gi', 'Gitsigns preview_hunk', desc = 'Hunk Info' }, + { 'gj', 'Gitsigns next_hunk', desc = 'Next Hunk' }, + { 'gk', 'Gitsigns prev_hunk', desc = 'Prev Hunk' }, + { 'gl', 'Git log', desc = 'Log' }, + { 'gp', 'Git pull', desc = 'Pull' }, + { 'gr', 'Gitsigns reset_hunk', desc = 'Reset Hunk' }, + { 'gs', 'Telescope git_branches', desc = 'Switch Branch' }, + { 'gt', group = 'Toggle' }, + { 'gtb', 'Gitsigns toggle_current_line_blame', desc = 'Blame' }, + { 'gtd', 'Gitsigns toggle_deleted', desc = 'Deleted' }, + { 'gtl', 'Gitsigns toggle_linehl', desc = 'Line HL' }, + { 'gtn', 'Gitsigns toggle_numhl', desc = 'Number HL' }, + { 'gts', 'Gitsigns toggle_signs', desc = 'Signs' }, + { 'gtw', 'Gitsigns toggle_word_diff', desc = 'Word Diff' }, + { 'gu', 'Gitsigns undo_stage_hunk', desc = 'Undo Stage Hunk' }, + { 'gv', 'Gitsigns select_hunk', desc = 'Select Hunk' }, + + { 'h', group = ' Help' }, + { 'hh', 'Telescope help_tags', desc = 'Help Pages' }, + { 'hi', 'vim.show_pos', desc = 'Inspect Position' }, + { 'hk', 'Lspsaga hover_doc', desc = 'Hover Doc' }, + { 'hm', 'Telescope man_pages', desc = 'Man Pages' }, + + { 'i', group = ' Insert' }, + { 'iP', 'put %:p', desc = 'Absolute Path' }, + { 'id', "put =strftime('## %a %d %b %r')", desc = 'Date' }, + { 'ie', 'Telescope symbols', desc = 'Emojis' }, + { 'if', "put =expand('%:t')", desc = 'File Name' }, + { 'in', 'Nerdy', desc = 'Nerd Glyphs' }, + { 'ip', 'put %', desc = 'Relative Path' }, + { 'ir', 'Telescope registers', desc = 'Registers' }, + { 'it', "put =strftime('## %r')", desc = 'Time' }, + + { 'j', group = ' Jump' }, + { + 'jN', + "lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", + desc = 'Search Backward', + }, + { 'jc', '*', desc = 'Word' }, + { 'jd', 'FlashDiagnostics', desc = 'Diagnostics' }, + { 'jf', 'Telescope jumplist', desc = 'Jumplist' }, + { 'jh', '', desc = 'Backward' }, + { 'jj', "lua require('flash').remote()", desc = 'Remote' }, + { 'jk', "lua require('flash').treesitter()", desc = 'Treesitter' }, + { 'jl', '', desc = 'Forward' }, + { + 'jn', + "lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", + desc = 'Search Forward', + }, + { 'jp', "lua require('flash').jump({continue = true})", desc = 'Previous Jump' }, + { 'js', "lua require('flash').jump()", desc = 'Search' }, + { 'jt', "lua require('flash').treesitter_search()", desc = 'Remote Treesitter' }, + { + 'jw', + 'lua require("flash").jump({ pattern = vim.fn.expand("")})', + desc = 'Current Word', + }, + + { 'k', group = ' Keys' }, + { 'kc', 'Telescope commands', desc = 'Commands' }, + { 'kh', 'Telescope command_history', desc = 'Command History' }, + { 'kk', 'Telescope keymaps', desc = 'Keymaps' }, + { 'ks', 'Telescope search_history', desc = 'Search History' }, + + { 'l', group = ' LSP' }, + { 'lF', 'Telescope lsp_references layout_strategy=vertical', desc = 'References' }, + { 'lL', 'Lspsaga show_workspace_diagnostics', desc = 'Workspace Diagnostics' }, + { 'lP', 'Telescope lsp_outgoing_calls', desc = 'Outgoing Calls' }, + { 'lQ', 'LspRestart', desc = 'Restart LSP' }, + { 'lR', 'Lspsaga project_replace', desc = 'Replace' }, + { 'lS', 'Telescope lsp_dynamic_workspace_symbols', desc = 'Workspace Symbols' }, + { 'lT', 'Lspsaga goto_type_definition', desc = 'Goto Type Definition' }, + { 'la', 'Lspsaga code_action', desc = 'Code Action' }, + { 'ld', 'Lspsaga peek_definition', desc = 'Peek Definition' }, + { 'lf', 'Lspsaga finder', desc = 'Finder' }, + { 'lg', 'Lspsaga goto_definition', desc = 'Goto Definition' }, + { 'lh', 'Lspsaga hover_doc', desc = 'Hover' }, + { 'li', 'LspInfo', desc = 'LSP Info' }, + { 'lj', 'Lspsaga diagnostic_jump_next', desc = 'Next Diagnostic' }, + { 'lk', 'Lspsaga diagnostic_jump_prev', desc = 'Prev Diagnostic' }, + { 'll', 'Telescope diagnostics layout_strategy=vertical', desc = 'File Diagnostics' }, + { 'lo', 'Lspsaga outline', desc = 'Outline' }, + { 'lp', 'Telescope lsp_incoming_calls', desc = 'Incoming Calls' }, + { 'lq', 'LspStop', desc = 'Stop LSP' }, + { 'lr', 'Lspsaga rename', desc = 'Rename' }, + { 'ls', 'Telescope lsp_document_symbols theme=get_ivy', desc = 'Document Symbols' }, + { 'lt', 'Lspsaga peek_type_definition', desc = 'Peek Type Definition' }, + + { 'm', group = ' Marks' }, + { 'm1', "lua require('marks').toggle_bookmark1()", desc = 'Toggle Bookmark 0' }, + { 'm2', "lua require('marks').toggle_bookmark2()", desc = 'Toggle Bookmark 2' }, + { 'm3', "lua require('marks').toggle_bookmark3()", desc = 'Toggle Bookmark 3' }, + { 'm4', "lua require('marks').toggle_bookmark4()", desc = 'Toggle Bookmark 4' }, + { 'mD', "lua require('marks').delete_buf()", desc = 'Delete Buffer' }, + { 'mP', "lua require('marks').preview()", desc = 'Preview' }, + { + 'mb', + "lua require('telescope').extensions.marks_nvim.bookmarks_list_all()", + desc = 'Bookmarks', + }, + { 'md', "lua require('marks').delete_line()", desc = 'Delete Line' }, + { 'mh', "lua require('marks').next_bookmark()", desc = 'Next Bookmark' }, + { 'mj', "lua require('marks').next()", desc = 'Next' }, + { 'mk', "lua require('marks').prev()", desc = 'Previous' }, + { 'ml', "lua require('marks').prev_bookmark()", desc = 'Previous Bookmark' }, + { 'mm', 'Telescope marks', desc = 'All Marks' }, + { 'mn', group = 'Next Bookmark Group' }, + { 'mn1', "lua require('marks').next_bookmark1()", desc = 'Next Bookmark 1' }, + { 'mn2', "lua require('marks').next_bookmark2()", desc = 'Next Bookmark 2' }, + { 'mn3', "lua require('marks').next_bookmark3()", desc = 'Next Bookmark 3' }, + { 'mn4', "lua require('marks').next_bookmark4()", desc = 'Next Bookmark 4' }, + { 'mp', group = 'Previous Bookmark Group' }, + { 'mp1', "lua require('marks').prev_bookmark1()", desc = 'Previous Bookmark 1' }, + { 'mp2', "lua require('marks').prev_bookmark2()", desc = 'Previous Bookmark 2' }, + { 'mp3', "lua require('marks').prev_bookmark3()", desc = 'Previous Bookmark 3' }, + { 'mp4', "lua require('marks').prev_bookmark4()", desc = 'Previous Bookmark 4' }, + { 'ms', "lua require('marks').set_next()", desc = 'Set Next' }, + { 'mt', "lua require('marks').toggle()", desc = 'Toggle' }, + { 'mx', "lua require('marks').delete_bookmark()", desc = 'Delete Bookmark' }, + + { 'n', group = ' Notes' }, + { 'nd', 'Tdo', desc = "Today's Todo" }, + { 'ne', 'TdoEntry', desc = "Today's Entry" }, + { 'nf', 'TdoFiles', desc = 'All Notes' }, + { 'ng', 'TdoFind', desc = 'Find Notes' }, + { 'nh', 'Tdo -1', desc = "Yesterday's Todo" }, + { 'nl', 'Tdo 1', desc = "Tomorrow's Todo" }, + { 'nn', 'TdoNote', desc = 'New Note' }, + { + 'ns', + 'lua require("tdo").run_with("commit " .. vim.fn.expand("%:p")) vim.notify("Committed!")', + desc = 'Commit Note', + }, + { 'nt', 'TdoTodos', desc = 'Incomplete Todos' }, + { 'nx', 'TdoToggle', desc = 'Toggle Todo' }, + + { 'o', group = ' Options' }, + { 'oc', 'Telescope colorscheme', desc = 'Colorscheme' }, + { 'oh', 'Telescope highlights', desc = 'Highlight Colors' }, + { 'on', 'set relativenumber!', desc = 'Relative Numbers' }, + { 'oo', 'Telescope vim_options', desc = 'All Options' }, + + { 'p', group = ' Packages' }, + { 'pP', 'Lazy profile', desc = 'Profile' }, + { 'pc', 'Lazy check', desc = 'Check' }, + { 'pd', 'Lazy debug', desc = 'Debug' }, + { 'pi', 'Lazy install', desc = 'Install' }, + { 'pl', 'Lazy log', desc = 'Log' }, + { 'pm', 'Mason', desc = 'Mason' }, + { 'pp', 'Lazy', desc = 'Plugins' }, + { 'pr', 'Lazy restore', desc = 'Restore' }, + { 'ps', 'Lazy sync', desc = 'Sync' }, + { 'pu', 'Lazy update', desc = 'Update' }, + { 'px', 'Lazy clean', desc = 'Clean' }, + + { 'q', group = ' Quit' }, + { 'qa', 'qall', desc = 'Quit All' }, + { 'qb', 'bw', desc = 'Close Buffer' }, + { 'qd', 'bdelete', desc = 'Delete Buffer' }, + { 'qf', 'qall!', desc = 'Force Quit' }, + { 'qq', 'q', desc = 'Quit' }, + { 'qs', 'c', desc = 'Close Split' }, + { 'qw', 'wq', desc = 'Write and Quit' }, + + { 'r', group = ' Refactor' }, + { + 'rR', + "lua require('telescope').extensions.refactoring.refactors()", + desc = 'Refactor Commands', + }, + { 'rS', "lua require('spectre').open()", desc = 'Replace' }, + { 'rb', "lua require('spectre').open_file_search()", desc = 'Replace Buffer' }, + { 'rd', '', desc = 'Go To Definition' }, + { 're', "lua require('refactoring').refactor('Extract Block')", desc = 'Extract Block' }, + { + 'rf', + "lua require('refactoring').refactor('Extract Block To File')", + desc = 'Extract To File', + }, + { 'rh', '', desc = 'List Definition Head' }, + { 'ri', "lua require('refactoring').refactor('Inline Variable')", desc = 'Inline Variable' }, + { 'rj', '', desc = 'Next Usage' }, + { 'rk', '', desc = 'Previous Usage' }, + { 'rl', '', desc = 'List Definition' }, + { 'rn', '', desc = 'Swap Next' }, + { 'rp', '', desc = 'Swap Previous' }, + { 'rr', '', desc = 'Smart Rename' }, + { 'rs', ':%s/\\<\\>//gI', desc = 'Replace Word' }, + { 'rv', "lua require('refactoring').refactor('Extract Variable')", desc = 'Extract Variable' }, + { 'rw', "lua require('spectre').open_visual({select_word=true})", desc = 'Replace Word' }, + + { 's', group = ' Split' }, + { 's+', 'resize +10', desc = 'Increase window height' }, + { 's-', 'vertical resize -20', desc = 'Decrease window width' }, + { 's/', 's', desc = 'Split Below' }, + { 's=', 'vertical resize +20', desc = 'Increase window width' }, + { 'sH', 'vertical resize -10', desc = 'Decrease window width' }, + { 'sJ', 'resize -5', desc = 'Decrease window height' }, + { 'sK', 'resize +5', desc = 'Increase window height' }, + { 'sL', 'vertical resize +10', desc = 'Increase window width' }, + { 's\\', 'v', desc = 'Split Right' }, + { 's_', 'resize -10', desc = 'Decrease window height' }, + { 's`', 'p', desc = 'Previous Window' }, + { 'sa', 'split', desc = 'Horizontal Split' }, + { 'sc', 'tabclose', desc = 'Close Tab' }, + { 'sf', 'tabfirst', desc = 'First Tab' }, + { 'sh', 'h', desc = 'Move Left' }, + { 'sj', 'j', desc = 'Move Down' }, + { 'sk', 'k', desc = 'Move Up' }, + { 'sl', 'l', desc = 'Move Right' }, + { 'sp', 'NavigatorPrevious', desc = 'Previous Pane' }, + { 'sq', 'c', desc = 'Close Split' }, + { 'ss', 'vsplit', desc = 'Vertical Split' }, + + { 't', group = ' Terminal' }, + { 't`', 'Sterm', desc = 'Horizontal Terminal' }, + { 'tc', 'Sterm bundle exec rails console', desc = 'Rails Console' }, + { 'td', 'Sterm dexe', desc = 'Exe Launcher' }, + { 'tn', 'Sterm node', desc = 'Node' }, + { 'tp', 'Sterm bpython', desc = 'Python' }, + { 'tr', 'Sterm irb', desc = 'Ruby' }, + { 'ts', 'Sterm', desc = 'Horizontal Terminal' }, + { 'tt', 'Fterm', desc = 'Terminal' }, + { 'tv', 'Vterm', desc = 'Vertical Terminal' }, + { 'tw', 'Sterm dexe --wait-before-exit', desc = 'Exe Launcher, Wait' }, + + { 'u', group = ' Test' }, + { 'uc', 'lua require("neotest").run.run()', desc = 'Run Current Test' }, + { 'uf', 'lua require("neotest").run.run(vim.fn.expand("%"))', desc = 'Run Test File' }, + { 'uo', 'Neotest output-panel', desc = 'Test Output' }, + { 'us', 'Neotest summary', desc = 'Test Summary' }, + + { 'v', group = ' Select' }, + { 'vB', 'vab', desc = 'Around Bracket' }, + { 'vP', 'vap', desc = 'Around Para' }, + { 'vQ', 'vaq', desc = 'Around Quote' }, + { 'vb', 'vib', desc = 'Bracket' }, + { 'vp', 'vip', desc = 'Paragraph' }, + { 'vq', 'viq', desc = 'Quote' }, + + { 'w', group = ' Writing' }, + { 'wc', 'set spell!', desc = 'Spellcheck' }, + { 'wf', "lua require'utils'.sudo_write()", desc = 'Force Write' }, + { 'wj', ']s', desc = 'Next Misspell' }, + { 'wk', '[s', desc = 'Prev Misspell' }, + { 'wq', 'wq', desc = 'Write and Quit' }, + { 'ws', 'Telescope spell_suggest', desc = 'Suggestions' }, + { 'wt', 'Twilight', desc = 'Twilight' }, + { 'ww', 'w', desc = 'Write and Quit' }, + { 'wz', 'ZenMode', desc = 'ZenMode' }, + { 'x', 'x', desc = ' Save and Quit' }, + + { 'y', group = ' Yank' }, + { 'yP', 'CopyAbsolutePath', desc = 'Absolute Path' }, + { 'ya', '%y+', desc = 'Copy Whole File' }, + { 'yf', 'CopyFileName', desc = 'File Name' }, + { 'yg', 'lua require"gitlinker".get_buf_range_url()', desc = 'Copy Git URL' }, + { 'yp', 'CopyRelativePath', desc = 'Relative Path' }, } -local mappings = { - b = { - name = icons.ui.Bug .. 'Debug', - b = { 'DapToggleBreakpoint', 'Breakpoint' }, - c = { 'DapContinue', 'Continue' }, - i = { 'DapStepInto', 'Into' }, - l = { "lua require'dap'.run_last()", 'Last' }, - o = { 'DapStepOver', 'Over' }, - O = { 'DapStepOut', 'Out' }, - r = { 'DapToggleRepl', 'Repl' }, - R = { 'DapRestartFrame', 'Restart Frame' }, - t = { 'DapUIToggle', 'Debugger' }, - x = { 'DapTerminate', 'Exit' }, - }, - c = { - name = icons.ui.Neovim .. 'Code', - c = { 'CccHighlighterToggle', 'Highlight Colors' }, - d = { 'RootDir', 'Root Directory' }, - f = { 'lua vim.lsp.buf.format({async = true})', 'Format File' }, - F = { 'retab', 'Fix Tabs' }, - h = { 'Hardtime toggle', 'Hardtime' }, - l = { ':g/^\\s*$/d', 'Clean Empty Lines' }, - m = { 'MarkdownPreviewToggle', 'Markdown Preview' }, - n = { 'Telescope notify', 'Notifications' }, - o = { 'Dashboard', 'Dashboard' }, - p = { 'CccPick', 'Pick Color' }, - P = { 'CccConvert', 'Convert Color' }, - r = { 'Telescope reloader', 'Reload Module' }, - R = { 'ReloadConfig', 'Reload Configs' }, - x = { '%SnipRun', 'Run File' }, - }, - d = { - name = icons.ui.Database .. 'Database', - b = { 'DBToggle', 'DB Explorer' }, - j = { 'lua require("dbee").next()', 'DB Next' }, - k = { 'lua require("dbee").prev()', 'DB Prev' }, - s = { 'lua require("dbee").store("csv", "buffer", { extra_arg = 0 })', 'To CSV' }, - S = { 'lua require("dbee").store("json", "buffer", { extra_arg = 0 })', 'To JSON' }, - t = { 'lua require("dbee").store("table", "buffer", { extra_arg = 0 })', 'To Table' }, - }, - e = { - name = icons.ui.Pencil .. 'Edit', - a = { 'b#', 'Alternate File' }, - c = { 'e $MYVIMRC', 'Config' }, - d = { 'lua require("telescope.builtin").find_files({cwd = vim.fn.stdpath("config")})', 'Config Dir' }, - e = { 'NvimTreeToggle', 'Explorer' }, - f = { 'gf', 'File Under Cursor' }, - l = { 'e ~/.config/shell/local.sh', 'Local Config' }, - m = { 'e README.md', 'Readme' }, - n = { 'enew', 'New File' }, - z = { 'e $ZDOTDIR/.zshrc', 'Zsh Config' }, - }, - f = { - name = icons.ui.Telescope .. 'Find', - a = { 'lua require("telescope").extensions.menufacture.find_files()', 'All Files' }, - b = { 'Telescope buffers', 'Buffers' }, - c = { 'Telescope git_bcommits', 'File Commits' }, - f = { 'lua require("telescope").extensions.menufacture.git_files()', 'Find files' }, - g = { 'lua require("telescope").extensions.menufacture.live_grep()', 'Find Text' }, - l = { 'Telescope loclist', 'Location List' }, - m = { 'Telescope git_status', 'Modified files' }, - o = { 'Telescope live_grep grep_open_files=true', 'Find in Open Files' }, - p = { 'Telescope resume', 'Last Search' }, - q = { 'Telescope quickfix', 'Quickfix' }, - r = { 'Telescope oldfiles', 'Recent Files' }, - s = { 'Telescope current_buffer_fuzzy_find', 'Fuzzy Find in File' }, - t = { 'Telescope', 'Panel' }, - u = { 'Telescope undo', 'Undo History' }, - w = { 'lua require("telescope").extensions.menufacture.grep_string()', 'Find Word' }, - }, - g = { - name = icons.git.Octoface .. 'Git', - a = { 'Gitsigns stage_hunk', 'Stage Hunk' }, - A = { 'Gitsigns stage_buffer', 'Stage Buffer' }, - b = { "lua require('gitsigns').blame_line({full = true})", 'Blame' }, - c = { 'Telescope git_commits', 'Find Commits' }, - C = { 'CoAuthor', 'Co-Authors' }, - d = { 'Gitsigns diffthis HEAD', 'Diff' }, - f = { 'Git', 'Fugitive Panel' }, - g = { 'Fterm lazygit', 'Lazygit' }, - i = { 'Gitsigns preview_hunk', 'Hunk Info' }, - j = { 'Gitsigns next_hunk', 'Next Hunk' }, - k = { 'Gitsigns prev_hunk', 'Prev Hunk' }, - l = { 'Git log', 'Log' }, - p = { 'Git pull', 'Pull' }, - P = { 'Git push', 'Push' }, - r = { 'Gitsigns reset_hunk', 'Reset Hunk' }, - R = { 'Gitsigns reset_buffer', 'Reset Buffer' }, - s = { 'Telescope git_branches', 'Switch Branch' }, - S = { 'Telescope git_stash', 'Stashed Changes' }, - t = { - name = 'Toggle', - b = { 'Gitsigns toggle_current_line_blame', 'Blame' }, - d = { 'Gitsigns toggle_deleted', 'Deleted' }, - l = { 'Gitsigns toggle_linehl', 'Line HL' }, - n = { 'Gitsigns toggle_numhl', 'Number HL' }, - s = { 'Gitsigns toggle_signs', 'Signs' }, - w = { 'Gitsigns toggle_word_diff', 'Word Diff' }, - }, - u = { 'Gitsigns undo_stage_hunk', 'Undo Stage Hunk' }, - v = { 'Gitsigns select_hunk', 'Select Hunk' }, - }, - h = { - name = icons.ui.Question .. 'Help', - h = { 'Telescope help_tags', 'Help Pages' }, - i = { vim.show_pos, 'Inspect Position' }, - k = { 'Lspsaga hover_doc', 'Hover Doc' }, - m = { 'Telescope man_pages', 'Man Pages' }, - }, - i = { - name = icons.ui.Download .. 'Insert', - d = { "put =strftime('## %a %d %b %r')", 'Date' }, - e = { 'Telescope symbols', 'Emojis' }, - f = { "put =expand('%:t')", 'File Name' }, - n = { 'Nerdy', 'Nerd Glyphs' }, - P = { 'put %:p', 'Absolute Path' }, - p = { 'put %', 'Relative Path' }, - r = { 'Telescope registers', 'Registers' }, - t = { "put =strftime('## %r')", 'Time' }, - }, - j = { - name = icons.ui.Jump .. 'Jump', - c = { '*', 'Word' }, - d = { 'FlashDiagnostics', 'Diagnostics' }, - f = { 'Telescope jumplist', 'Jumplist' }, - h = { '', 'Backward' }, - j = { "lua require('flash').remote()", 'Remote' }, - k = { "lua require('flash').treesitter()", 'Treesitter' }, - l = { '', 'Forward' }, - n = { - "lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", - 'Search Forward', - }, - N = { - "lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", - 'Search Backward', - }, - p = { "lua require('flash').jump({continue = true})", 'Previous Jump' }, - s = { "lua require('flash').jump()", 'Search' }, - t = { "lua require('flash').treesitter_search()", 'Remote Treesitter' }, - w = { 'lua require("flash").jump({ pattern = vim.fn.expand("")})', 'Current Word' }, - }, - k = { - name = icons.ui.Keyboard .. 'Keys', - c = { 'Telescope commands', 'Commands' }, - h = { 'Telescope command_history', 'Command History' }, - k = { 'Telescope keymaps', 'Keymaps' }, - s = { 'Telescope search_history', 'Search History' }, - }, - l = { - name = icons.kind.TypeParameter .. 'LSP', - a = { 'Lspsaga code_action', 'Code Action' }, - d = { 'Lspsaga peek_definition', 'Peek Definition' }, - f = { 'Lspsaga finder', 'Finder' }, - F = { 'Telescope lsp_references layout_strategy=vertical', 'References' }, - g = { 'Lspsaga goto_definition', 'Goto Definition' }, - h = { 'Lspsaga hover_doc', 'Hover' }, - i = { 'LspInfo', 'LSP Info' }, - j = { 'Lspsaga diagnostic_jump_next', 'Next Diagnostic' }, - k = { 'Lspsaga diagnostic_jump_prev', 'Prev Diagnostic' }, - L = { 'Lspsaga show_workspace_diagnostics', 'Workspace Diagnostics' }, - l = { 'Telescope diagnostics layout_strategy=vertical', 'File Diagnostics' }, - o = { 'Lspsaga outline', 'Outline' }, - p = { 'Telescope lsp_incoming_calls', 'Incoming Calls' }, - P = { 'Telescope lsp_outgoing_calls', 'Outgoing Calls' }, - q = { 'LspStop', 'Stop LSP' }, - Q = { 'LspRestart', 'Restart LSP' }, - R = { 'Lspsaga project_replace', 'Replace' }, - r = { 'Lspsaga rename', 'Rename' }, - s = { 'Telescope lsp_document_symbols theme=get_ivy', 'Document Symbols' }, - S = { 'Telescope lsp_dynamic_workspace_symbols', 'Workspace Symbols' }, - T = { 'Lspsaga goto_type_definition', 'Goto Type Definition' }, - t = { 'Lspsaga peek_type_definition', 'Peek Type Definition' }, - }, - m = { - name = icons.ui.Bookmark .. 'Marks', - b = { "lua require('telescope').extensions.marks_nvim.bookmarks_list_all()", 'Bookmarks' }, - d = { "lua require('marks').delete_line()", 'Delete Line' }, - D = { "lua require('marks').delete_buf()", 'Delete Buffer' }, - h = { "lua require('marks').next_bookmark()", 'Next Bookmark' }, - j = { "lua require('marks').next()", 'Next' }, - k = { "lua require('marks').prev()", 'Previous' }, - l = { "lua require('marks').prev_bookmark()", 'Previous Bookmark' }, - m = { 'Telescope marks', 'All Marks' }, - P = { "lua require('marks').preview()", 'Preview' }, - s = { "lua require('marks').set_next()", 'Set Next' }, - t = { "lua require('marks').toggle()", 'Toggle' }, - x = { "lua require('marks').delete_bookmark()", 'Delete Bookmark' }, +local v_mappings = { + mode = { 'v' }, + { 'c', group = ' Code' }, + { 'cS', ':sort!', desc = 'Sort Desc' }, + { 'ci', ':sort i', desc = 'Sort Case Insensitive' }, + { 'cs', ':sort', desc = 'Sort Asc' }, + { 'cu', ':!uniq', desc = 'Unique' }, + { 'cx', "'<,'>SnipRun", desc = 'Run Code' }, - ['1'] = { "lua require('marks').toggle_bookmark1()", 'Toggle Bookmark 0' }, - ['2'] = { "lua require('marks').toggle_bookmark2()", 'Toggle Bookmark 2' }, - ['3'] = { "lua require('marks').toggle_bookmark3()", 'Toggle Bookmark 3' }, - ['4'] = { "lua require('marks').toggle_bookmark4()", 'Toggle Bookmark 4' }, + { 'g', group = ' Git' }, + { 'ga', 'Gitsigns stage_hunk', desc = 'Stage Hunk' }, + { 'gr', 'Gitsigns reset_hunk', desc = 'Reset Hunk' }, - n = { - name = 'Next Bookmark Group', - ['1'] = { "lua require('marks').next_bookmark1()", 'Next Bookmark 1' }, - ['2'] = { "lua require('marks').next_bookmark2()", 'Next Bookmark 2' }, - ['3'] = { "lua require('marks').next_bookmark3()", 'Next Bookmark 3' }, - ['4'] = { "lua require('marks').next_bookmark4()", 'Next Bookmark 4' }, - }, + { 'j', group = ' Jump' }, + { + 'jN', + "lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", + desc = 'Search Backward', + }, + { 'jd', 'FlashDiagnostics', desc = 'Diagnostics' }, + { 'jj', "lua require('flash').remote()", desc = 'Remote' }, + { 'jk', "lua require('flash').treesitter()", desc = 'Treesitter' }, + { + 'jn', + "lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", + desc = 'Search Forward', + }, + { 'jp', "lua require('flash').jump({continue = true})", desc = 'Previous Jump' }, + { 'js', "lua require('flash').jump()", desc = 'Search' }, + { 'jt', "lua require('flash').treesitter_search()", desc = 'Remote Treesitter' }, + { + 'jw', + 'lua require("flash").jump({ pattern = vim.fn.expand("")})', + desc = 'Current Word', + }, - p = { - name = 'Previous Bookmark Group', - ['1'] = { "lua require('marks').prev_bookmark1()", 'Previous Bookmark 1' }, - ['2'] = { "lua require('marks').prev_bookmark2()", 'Previous Bookmark 2' }, - ['3'] = { "lua require('marks').prev_bookmark3()", 'Previous Bookmark 3' }, - ['4'] = { "lua require('marks').prev_bookmark4()", 'Previous Bookmark 4' }, - }, - }, - n = { - name = icons.ui.Note .. 'Notes', - d = { 'Tdo', "Today's Todo" }, - e = { 'TdoEntry', "Today's Entry" }, - f = { 'TdoFiles', 'All Notes' }, - g = { 'TdoFind', 'Find Notes' }, - h = { 'Tdo -1', "Yesterday's Todo" }, - l = { 'Tdo 1', "Tomorrow's Todo" }, - n = { 'TdoNote', 'New Note' }, - s = { - 'lua require("tdo").run_with("commit " .. vim.fn.expand("%:p")) vim.notify("Committed!")', - 'Commit Note', - }, - t = { 'TdoTodos', 'Incomplete Todos' }, - x = { 'TdoToggle', 'Toggle Todo' }, - }, - o = { - name = icons.ui.Gear .. 'Options', - c = { 'Telescope colorscheme', 'Colorscheme' }, - h = { 'Telescope highlights', 'Highlight Colors' }, - n = { 'set relativenumber!', 'Relative Numbers' }, - o = { 'Telescope vim_options', 'All Options' }, - }, - p = { - name = icons.ui.Package .. 'Packages', - c = { 'Lazy check', 'Check' }, - d = { 'Lazy debug', 'Debug' }, - i = { 'Lazy install', 'Install' }, - l = { 'Lazy log', 'Log' }, - m = { 'Mason', 'Mason' }, - P = { 'Lazy profile', 'Profile' }, - p = { 'Lazy', 'Plugins' }, - r = { 'Lazy restore', 'Restore' }, - s = { 'Lazy sync', 'Sync' }, - u = { 'Lazy update', 'Update' }, - x = { 'Lazy clean', 'Clean' }, - }, - q = { - name = icons.ui.Close .. 'Quit', - a = { 'qall', 'Quit All' }, - b = { 'bw', 'Close Buffer' }, - d = { 'bdelete', 'Delete Buffer' }, - f = { 'qall!', 'Force Quit' }, - q = { 'q', 'Quit' }, - w = { 'wq', 'Write and Quit' }, - }, - r = { - name = icons.ui.Code .. 'Refactor', - b = { "lua require('spectre').open_file_search()", 'Replace Buffer' }, - d = { '', 'Go To Definition' }, - e = { "lua require('refactoring').refactor('Extract Block')", 'Extract Block' }, - f = { "lua require('refactoring').refactor('Extract Block To File')", 'Extract To File' }, - h = { '', 'List Definition Head' }, - i = { "lua require('refactoring').refactor('Inline Variable')", 'Inline Variable' }, - j = { '', 'Next Usage' }, - k = { '', 'Previous Usage' }, - l = { '', 'List Definition' }, - n = { '', 'Swap Next' }, - p = { '', 'Swap Previous' }, - R = { "lua require('telescope').extensions.refactoring.refactors()", 'Refactor Commands' }, - r = { '', 'Smart Rename' }, - S = { "lua require('spectre').open()", 'Replace' }, - s = { [[:%s/\<\>//gI]], 'Replace Word' }, - v = { "lua require('refactoring').refactor('Extract Variable')", 'Extract Variable' }, - w = { "lua require('spectre').open_visual({select_word=true})", 'Replace Word' }, - }, - s = { - name = icons.ui.Windows .. 'Split', - ['`'] = { 'p', 'Previous Window' }, - ['\\'] = { 'v', 'Split Right' }, - ['/'] = { 's', 'Split Below' }, - ['-'] = { 'vertical resize -20', 'Decrease window width' }, - ['='] = { 'vertical resize +20', 'Increase window width' }, - ['_'] = { 'resize -10', 'Decrease window height' }, - ['+'] = { 'resize +10', 'Increase window height' }, - a = { 'split', 'Horizontal Split' }, - c = { 'tabclose', 'Close Tab' }, - f = { 'tabfirst', 'First Tab' }, - h = { 'h', 'Move Left' }, - H = { 'vertical resize -10', 'Decrease window width' }, - j = { 'j', 'Move Down' }, - J = { 'resize -5', 'Decrease window height' }, - k = { 'k', 'Move Up' }, - K = { 'resize +5', 'Increase window height' }, - l = { 'l', 'Move Right' }, - L = { 'vertical resize +10', 'Increase window width' }, - p = { 'NavigatorPrevious', 'Previous Pane' }, - q = { 'c', 'Close Split' }, - s = { 'vsplit', 'Vertical Split' }, - }, - t = { - name = icons.ui.Terminal .. 'Terminal', - ['`'] = { 'Sterm', 'Horizontal Terminal' }, - c = { 'Sterm bundle exec rails console', 'Rails Console' }, - n = { 'Sterm node', 'Node' }, - p = { 'Sterm bpython', 'Python' }, - r = { 'Sterm irb', 'Ruby' }, - s = { 'Sterm', 'Horizontal Terminal' }, - t = { 'Fterm', 'Terminal' }, - v = { 'Vterm', 'Vertical Terminal' }, - }, - u = { - name = icons.ui.Test .. 'Test', - F = { 'lua require("neotest").run.run()', 'Run Current Test' }, - f = { 'lua require("neotest").run.run(vim.fn.expand("%"))', 'Run Test' }, - o = { 'Neotest output-panel', 'Test Output' }, - O = { 'Neotest summary', 'Test Summary' }, - }, - v = { - name = icons.ui.Star .. 'Select', - B = { 'vab', 'Around Bracket' }, - b = { 'vib', 'Bracket' }, - P = { 'vap', 'Around Para' }, - p = { 'vip', 'Paragraph' }, - Q = { 'vaq', 'Around Quote' }, - q = { 'viq', 'Quote' }, - }, - w = { - name = icons.kind.File .. 'Writing', - c = { 'set spell!', 'Spellcheck' }, - f = { "lua require'utils'.sudo_write()", 'Force Write' }, - j = { ']s', 'Next Misspell' }, - k = { '[s', 'Prev Misspell' }, - q = { 'wq', 'Write and Quit' }, - s = { 'Telescope spell_suggest', 'Suggestions' }, - t = { 'Twilight', 'Twilight' }, - w = { 'w', 'Write and Quit' }, - z = { 'ZenMode', 'ZenMode' }, - }, - x = { 'x', icons.ui.SignOut .. 'Save and Quit' }, - y = { - name = icons.ui.Clipboard .. 'Yank', - a = { '%y+', 'Copy Whole File' }, - f = { 'CopyFileName', 'File Name' }, - g = { 'lua require"gitlinker".get_buf_range_url()', 'Copy Git URL' }, - P = { 'CopyAbsolutePath', 'Absolute Path' }, - p = { 'CopyRelativePath', 'Relative Path' }, - }, -} + { 'l', group = ' LSP' }, + { 'la', desc = 'Lspsaga range_code_action' }, -local vopts = { - mode = 'v', - prefix = '', - buffer = nil, - silent = true, - noremap = true, - nowait = true, -} + { 'r', group = ' Refactor' }, + { + 're', + "lua require('refactoring').refactor('Extract Function')", + desc = 'Extract Function', + }, + { + 'rf', + "lua require('refactoring').refactor('Extract Function To File')", + desc = 'Extract To File', + }, + { 'ri', "lua require('refactoring').refactor('Inline Variable')", desc = 'Inline Variable' }, + { + 'rr', + "lua require('telescope').extensions.refactoring.refactors()", + desc = 'Refactor Commands', + }, + { + 'rv', + "lua require('refactoring').refactor('Extract Variable')", + desc = 'Extract Variable', + }, -local vmappings = { - a = { - name = icons.ui.Copilot .. 'AI', - c = { 'CopilotChatToggle', 'Copilot Chat' }, - d = { 'CopilotChatDocs', 'Docs' }, - e = { 'CopilotChatExplain', 'Explain' }, - f = { 'CopilotChatFix', 'Fix' }, - F = { 'CopilotChatFixDiagnostic', 'Fix Diagnostic' }, - g = { 'CopilotChatCommit', 'Commit' }, - G = { 'CopilotChatCommitStaged', 'Commit Staged' }, - o = { 'CopilotChatOptimize', 'Optimize' }, - r = { 'CopilotChatReview', 'Review' }, - t = { 'CopilotChatTests', 'Tests' }, - }, - c = { - name = icons.ui.Neovim .. 'Code', - i = { ':sort i', 'Sort Case Insensitive' }, - S = { ':sort!', 'Sort Desc' }, - s = { ':sort', 'Sort Asc' }, - u = { ':!uniq', 'Unique' }, - x = { "'<,'>SnipRun", 'Run Code' }, - }, - g = { - name = icons.git.Octoface .. 'Git', - a = { 'Gitsigns stage_hunk', 'Stage Hunk' }, - r = { 'Gitsigns reset_hunk', 'Reset Hunk' }, - }, - j = { - name = icons.ui.Jump .. 'Jump', - d = { 'FlashDiagnostics', 'Diagnostics' }, - j = { "lua require('flash').remote()", 'Remote' }, - k = { "lua require('flash').treesitter()", 'Treesitter' }, - n = { - "lua require('flash').jump({search = { forward = true, wrap = false, multi_window = false },})", - 'Search Forward', - }, - N = { - "lua require('flash').jump({search = { forward = false, wrap = false, multi_window = false },})", - 'Search Backward', - }, - p = { "lua require('flash').jump({continue = true})", 'Previous Jump' }, - s = { "lua require('flash').jump()", 'Search' }, - t = { "lua require('flash').treesitter_search()", 'Remote Treesitter' }, - w = { 'lua require("flash").jump({ pattern = vim.fn.expand("")})', 'Current Word' }, - }, - l = { - name = icons.kind.TypeParameter .. 'LSP', - a = 'Lspsaga range_code_action', - }, - r = { - name = icons.ui.Code .. 'Refactor', - r = { "lua require('telescope').extensions.refactoring.refactors()", 'Refactor Commands' }, - e = { "lua require('refactoring').refactor('Extract Function')", 'Extract Function' }, - f = { "lua require('refactoring').refactor('Extract Function To File')", 'Extract To File' }, - v = { "lua require('refactoring').refactor('Extract Variable')", 'Extract Variable' }, - i = { "lua require('refactoring').refactor('Inline Variable')", 'Inline Variable' }, - }, - y = { - name = icons.ui.Clipboard .. 'Yank', - g = { 'lua require"gitlinker".get_buf_range_url("v")', 'Copy Git URL' }, - }, -} - -local no_leader_opts = { - mode = 'n', - prefix = '', - buffer = nil, - silent = true, - noremap = true, - nowait = true, + { 'y', group = ' Yank' }, + { 'yg', 'lua require"gitlinker".get_buf_range_url("v")', desc = 'Copy Git URL' }, } local no_leader_mappings = { - K = { 'Lspsaga hover_doc', 'LSP Hover' }, - Q = { 'qall!', 'Force Quit!' }, - U = { 'redo', 'Redo' }, + { '', 'resize -10', desc = 'Decrease window height' }, + { '', 'vertical resize -10', desc = 'Decrease window width' }, + { '', 'vertical resize +10', desc = 'Increase window width' }, + { '', 'resize +10', desc = 'Increase window height' }, + { '', 'Telescope find_files', desc = 'Find Files' }, + { '', 'Fterm lazygit', desc = 'Lazygit' }, - [''] = { 'bprevious', 'Previous Buffer' }, - [''] = { 'bnext', 'Next Buffer' }, + { '', 'h', desc = 'Move Left' }, + { '', 'j', desc = 'Move Down' }, + { '', 'k', desc = 'Move Up' }, + { '', 'l', desc = 'Move Right' }, + { '', 'p', desc = 'Previous Pane' }, - [''] = { 'Telescope find_files', 'Find Files' }, - [''] = { 'Fterm lazygit', 'Lazygit' }, + { '', 'bprevious', desc = 'Previous Buffer' }, + { '', 'bnext', desc = 'Next Buffer' }, - [''] = { 'h', 'Move Left' }, - [''] = { 'j', 'Move Down' }, - [''] = { 'k', 'Move Up' }, - [''] = { 'l', 'Move Right' }, - [''] = { 'p', 'Previous Pane' }, + { 'K', 'Lspsaga hover_doc', desc = 'LSP Hover' }, + { 'Q', 'qall!', desc = 'Force Quit!' }, + { 'U', 'redo', desc = 'Redo' }, - [''] = { 'resize +10', 'Increase window height' }, - [''] = { 'resize -10', 'Decrease window height' }, - [''] = { 'vertical resize -10', 'Decrease window width' }, - [''] = { 'vertical resize +10', 'Increase window width' }, + { '[', group = ' Previous' }, + { '[B', 'bfirst', desc = 'First Buffer' }, + { '[b', 'bprevious', desc = 'Buffer' }, + { '[d', 'Lspsaga diagnostic_jump_prev', desc = 'Diagnostic' }, + { '[e', 'g;', desc = 'Edit' }, + { '[g', 'Gitsigns prev_hunk', desc = 'Git Hunk' }, + { '[j', '', desc = 'Jump' }, - ['['] = { - name = icons.ui.ArrowLeft .. 'Previous', - b = { 'bprevious', 'Buffer' }, - B = { 'bfirst', 'First Buffer' }, - d = { 'Lspsaga diagnostic_jump_prev', 'Diagnostic' }, - e = { 'g;', 'Edit' }, - g = { 'Gitsigns prev_hunk', 'Git Hunk' }, - j = { '', 'Jump' }, - }, - [']'] = { - name = icons.ui.ArrowRight .. 'Next', - b = { 'bnext', 'Buffer' }, - B = { 'blast', 'Buffer' }, - d = { 'Lspsaga diagnostic_jump_next', 'Diagnostic' }, - e = { 'g,', 'Edit' }, - g = { 'Gitsigns next_hunk', 'Git Hunk' }, - j = { '', 'Jump' }, - }, + { ']', group = ' Next' }, + { ']B', 'blast', desc = 'Buffer' }, + { ']b', 'bnext', desc = 'Buffer' }, + { ']d', 'Lspsaga diagnostic_jump_next', desc = 'Diagnostic' }, + { ']e', 'g,', desc = 'Edit' }, + { ']g', 'Gitsigns next_hunk', desc = 'Git Hunk' }, + { ']j', '', desc = 'Jump' }, } if vim.fn.exists('$TMUX') == 1 then local tmux_mappings = { - [''] = { 'NavigatorLeft', 'Move Left' }, - [''] = { 'NavigatorDown', 'Move Down' }, - [''] = { 'NavigatorUp', 'Move Up' }, - [''] = { 'NavigatorRight', 'Move Right' }, - [''] = { 'NavigatorPrevious', 'Previous Pane' }, + { '', 'NavigatorLeft', desc = 'Move Left' }, + { '', 'NavigatorDown', desc = 'Move Down' }, + { '', 'NavigatorUp', desc = 'Move Up' }, + { '', 'NavigatorRight', desc = 'Move Right' }, + { '', 'NavigatorPrevious', desc = 'Previous Pane' }, } no_leader_mappings = vim.tbl_extend('force', no_leader_mappings, tmux_mappings) end which_key.setup(setup) -which_key.register(mappings, opts) -which_key.register(vmappings, vopts) -which_key.register(no_leader_mappings, no_leader_opts) -which_key.register({ mode = { 'o', 'x' }, i = i, a = a }) +which_key.add(n_mappings, v_mappings, no_leader_mappings)