From 6e08c07dc1c1a872430838089ae74732f70dda80 Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Mon, 22 Jul 2024 21:41:45 +0545 Subject: [PATCH] updates --- lua/core/options.lua | 43 +- lua/lib/util.lua | 15 + lua/plugins/lock.json | 31 +- lua/plugins/tools/which-key.lua | 962 +++++++++++++++++--------------- 4 files changed, 552 insertions(+), 499 deletions(-) diff --git a/lua/core/options.lua b/lua/core/options.lua index 69ff35b..650d869 100644 --- a/lua/core/options.lua +++ b/lua/core/options.lua @@ -57,6 +57,24 @@ local options = { writebackup = false, -- do not edit backups } +for k, v in pairs(options) do + vim.opt[k] = v +end + +-- netrw file explorer settings +vim.g.netrw_winsize = 20 +vim.g.netrw_banner = 0 +vim.g.netrw_liststyle = 1 + +-- Fix markdown indentation settings +vim.g.markdown_recommended_style = 0 + +vim.opt.path:append({ '**' }) +vim.opt.shortmess:append({ W = true, I = true, c = true }) + +-- hides `~` at the end of the buffer +vim.cmd([[set fillchars+=eob:\ ]]) + vim.cmd([[ setlocal spell spelllang=en "Set spellcheck language to en setlocal spell! "Disable spell checks by default @@ -64,25 +82,8 @@ vim.cmd([[ if has('win32') let g:python3_host_prog = $HOME . '/scoop/apps/python/current/python.exe' endif + let &t_Cs = "\e[4:3m" "Undercurl + let &t_Ce = "\e[4:0m" + set whichwrap+=<,>,[,],h,l + set iskeyword+=- ]]) - -vim.opt.path:append({ '**' }) - --- Undercurl -vim.cmd([[let &t_Cs = "\e[4:3m"]]) -vim.cmd([[let &t_Ce = "\e[4:0m"]]) - -vim.opt.shortmess:append({ W = true, I = true, c = true }) - --- Fix markdown indentation settings -vim.g.markdown_recommended_style = 0 - --- hides `~` at the end of the buffer -vim.cmd([[set fillchars+=eob:\ ]]) - -for k, v in pairs(options) do - vim.opt[k] = v -end - -vim.cmd('set whichwrap+=<,>,[,],h,l') -vim.cmd([[set iskeyword+=-]]) diff --git a/lua/lib/util.lua b/lua/lib/util.lua index 52d883f..b2f3de1 100644 --- a/lua/lib/util.lua +++ b/lua/lib/util.lua @@ -48,4 +48,19 @@ util.is_present = function(bin) return vim.fn.executable(bin) == 1 end +util.telescope_select = function(options, options_desc, select_prompt) + require('telescope.pickers') + .new({}, { + prompt_title = select_prompt, + results_title = options_desc, + finder = require('telescope.finders').new_table({ + results = options, + entry_maker = require('telescope.make_entry').gen_from_file(), + }), + sorter = require('telescope.sorters').get_fzy_sorter(), + previewer = require('telescope.previewers').vim_buffer_cat.new({}), + }) + :find() +end + return util diff --git a/lua/plugins/lock.json b/lua/plugins/lock.json index e7ba03d..316913a 100644 --- a/lua/plugins/lock.json +++ b/lua/plugins/lock.json @@ -15,8 +15,7 @@ "conform.nvim": { "branch": "master", "commit": "797de8f79055334104cf77893cd93fe3fc2ac154" }, "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" }, + "flash.nvim": { "branch": "main", "commit": "34c7be146a91fec3555c33fe89c7d643f6ef5cf1" }, "fortune.nvim": { "branch": "master", "commit": "29a99fbf887a2d48693f1eaa1893f84cde60af54" }, "friendly-snippets": { "branch": "main", "commit": "00ebcaa159e817150bd83bfe2d51fa3b3377d5c4" }, "gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, @@ -24,8 +23,8 @@ "hardtime.nvim": { "branch": "main", "commit": "9a4e24fb40482dc85a93bf6cf344a030b9bf9a39" }, "harpoon": { "branch": "harpoon2", "commit": "0378a6c428a0bed6a2781d459d7943843f374bce" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, - "lazy.nvim": { "branch": "main", "commit": "9a374a0fb4d3ac42dac4a129d4bead7252473c77" }, - "lazydev.nvim": { "branch": "main", "commit": "02f1055a777264d4b65896051ec28d0f322f7932" }, + "lazy.nvim": { "branch": "main", "commit": "839f9e78e78dc935b1188fb16583365991739c51" }, + "lazydev.nvim": { "branch": "main", "commit": "399299ca570aa82c13ee4fb1bd1304ce6baf7f05" }, "live-server.nvim": { "branch": "main", "commit": "f6f00a3f541251f0320910bb0d03c4ae14ee6d10" }, "lsp_lines.nvim": { "branch": "main", "commit": "dbfd8e96ec2696e1ceedcd23fd70e842256e3dea" }, "lspsaga.nvim": { "branch": "main", "commit": "6f920cfabddb9b7de5a3a4d0b7cd4f0774ae23e2" }, @@ -42,20 +41,20 @@ "neotest-jest": { "branch": "main", "commit": "514fd4eae7da15fd409133086bb8e029b65ac43f" }, "neotest-rspec": { "branch": "main", "commit": "48573d5882cbe8d8bcd3b735d9ee7705168b1b87" }, "nerdy.nvim": { "branch": "main", "commit": "b467d6609b78d6a5f1e12cbc08fcc1ac87af20f5" }, - "noice.nvim": { "branch": "main", "commit": "1df01e495b3ac0e2f5f111eba759691a9c21bb72" }, + "noice.nvim": { "branch": "main", "commit": "dd7363eae290ecdb9d6a2db6e0f59527df79edd6" }, "none-ls.nvim": { "branch": "main", "commit": "2cde745aadc2c36f6860a77a556494870675771a" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, "nvim-cmp": { "branch": "main", "commit": "d818fd0624205b34e14888358037fb6f5dc51234" }, "nvim-dap": { "branch": "master", "commit": "bc03b83c94d0375145ff5ac6a6dcf28c1241e06f" }, "nvim-dap-ui": { "branch": "master", "commit": "a5606bc5958db86f8d92803bea7400ee26a8d7e4" }, - "nvim-lspconfig": { "branch": "master", "commit": "e26da408cf955afa8e9ddbadd510e84ea8976cd7" }, + "nvim-lspconfig": { "branch": "master", "commit": "fa6c2a64100c6f692bbec29bbbc8ec2663c9e869" }, "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": "b3c54c31887b05d91be41a41392c811876807fd8" }, + "nvim-spider": { "branch": "main", "commit": "508b3504a350fb9a93bd0b7c0d41b8b5fc732b5e" }, + "nvim-tree.lua": { "branch": "master", "commit": "4e396b26244444c911b73e9f2f40ae0115351fd1" }, + "nvim-treesitter": { "branch": "master", "commit": "debf5816eee21b7d51025ef17ba0647386226cb5" }, "nvim-treesitter-endwise": { "branch": "master", "commit": "8b34305ffc28bd75a22f5a0a9928ee726a85c9a6" }, "nvim-treesitter-refactor": { "branch": "master", "commit": "65ad2eca822dfaec2a3603119ec3cc8826a7859e" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" }, @@ -63,17 +62,17 @@ "nvim-ts-autotag": { "branch": "main", "commit": "1624866a1379fc1861797f0ed05899a9c1d2ff61" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "6b5f95aa4d24f2c629a74f2c935c702b08dbde62" }, "nvim-web-devicons": { "branch": "master", "commit": "e612de3d3a41a6b7be47f51e956dddabcbf419d9" }, - "oil.nvim": { "branch": "master", "commit": "9e5eb2fcd1dfee2ff30c89273ffff179e42034b9" }, + "oil.nvim": { "branch": "master", "commit": "a6cea1a5b9bc9351769fe09a547c62fe4b669abd" }, "onedark.nvim": { "branch": "master", "commit": "fae34f7c635797f4bf62fb00e7d0516efa8abe37" }, "overseer.nvim": { "branch": "master", "commit": "87526babdb563b9e2f0646b420359389732326dc" }, "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" }, "rainbow-delimiters.nvim": { "branch": "master", "commit": "b29da4a6061a88270e875b38367d82c04c856128" }, - "refactoring.nvim": { "branch": "master", "commit": "8ef9cfb8199bed4be4d609cc4b5dbfb5416b3ca6" }, + "refactoring.nvim": { "branch": "master", "commit": "1c2b889fd494d7f0f4fcc1b0dacd7e8d4b3d9fbe" }, "ror.nvim": { "branch": "main", "commit": "9d31ad3953be83ac8dd542725ca4881c861f64a5" }, "sniprun": { "branch": "master", "commit": "f2302d4081914c3312456c91dc6965dfeec266b1" }, "tabout.nvim": { "branch": "master", "commit": "3d7fbc7f5e91ef0f96b4d787c78ad9f8820de3ec" }, - "tdo.nvim": { "branch": "main", "commit": "95d4651bc5aef366b7d53a0ba6872cf444c09f33" }, - "telescope-file-browser.nvim": { "branch": "master", "commit": "a7ab9a957b17199183388c6f357d614fcaa508e5" }, + "tdo.nvim": { "branch": "main", "commit": "f8d4ee275309c8a696236fcee92d78ecd98971bd" }, + "telescope-file-browser.nvim": { "branch": "master", "commit": "8574946bf6d0d820d7f600f3db808f5900a2ae23" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, "telescope-menufacture": { "branch": "main", "commit": "8c547e82a703fe90c7f69af04d0b4e47a59cc971" }, "telescope-symbols.nvim": { "branch": "master", "commit": "a6d0127a53d39b9fc2af75bd169d288166118aec" }, @@ -81,10 +80,10 @@ "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "termim.nvim": { "branch": "main", "commit": "58344167abb97bcef9bf720a762ea653a94e9daa" }, "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, - "twilight.nvim": { "branch": "main", "commit": "38dc017474ef05605ca14a2577e01e09f0db7133" }, + "twilight.nvim": { "branch": "main", "commit": "1584c0b0a979b71fd86b18d302ba84e9aba85b1b" }, "url-open": { "branch": "main", "commit": "9f8f4a56ac709f26aa17d8ef921b272bf2262a30" }, "vim-fugitive": { "branch": "master", "commit": "0444df68cd1cdabc7453d6bd84099458327e5513" }, "vim-rails": { "branch": "master", "commit": "2fba7907f585819a8653f0bc7dd7f437a822d9c6" }, - "which-key.nvim": { "branch": "main", "commit": "6e61b0904e9c038b6c511c43591ae2d811b4975e" }, - "zen-mode.nvim": { "branch": "main", "commit": "a31cf7113db34646ca320f8c2df22cf1fbfc6f2a" } + "which-key.nvim": { "branch": "main", "commit": "cc54b75fcbd8703e633f93cb0334fb13e2cfbd7e" }, + "zen-mode.nvim": { "branch": "main", "commit": "29b292bdc58b76a6c8f294c961a8bf92c5a6ebd6" } } diff --git a/lua/plugins/tools/which-key.lua b/lua/plugins/tools/which-key.lua index 3628a09..a502897 100644 --- a/lua/plugins/tools/which-key.lua +++ b/lua/plugins/tools/which-key.lua @@ -52,490 +52,528 @@ local setup = { triggers = true, } -local n_mappings = { - mode = 'n', - { 'a', group = ' AI' }, - { 'aF', 'CopilotChatFixDiagnostic', desc = 'Fix Diagnostic' }, - { 'aG', 'CopilotChatCommitStaged', desc = 'Commit Staged' }, - { 'ac', 'CopilotChatToggle', desc = 'Copilot Chat' }, - { 'ad', 'CopilotChatDocs', desc = 'Docs' }, - { 'ae', 'CopilotChatExplain', desc = 'Explain' }, - { 'af', 'CopilotChatFix', desc = 'Fix' }, - { 'ag', 'CopilotChatCommit', desc = 'Commit' }, - { 'al', 'CopilotChatLoad', desc = 'Load Chat' }, - { 'ao', 'CopilotChatOptimize', desc = 'Optimize' }, - { 'ar', 'CopilotChatReview', desc = 'Review' }, - { 'as', 'CopilotChatSave', desc = 'Save Chat' }, - { 'at', 'CopilotChatTests', desc = 'Tests' }, - - { '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 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 v_mappings = { - mode = { 'v' }, - { 'a', group = ' AI' }, - { 'aF', 'CopilotChatFixDiagnostic', desc = 'Fix Diagnostic' }, - { 'aG', 'CopilotChatCommitStaged', desc = 'Commit Staged' }, - { 'ac', 'CopilotChatToggle', desc = 'Copilot Chat' }, - { 'ad', 'CopilotChatDocs', desc = 'Docs' }, - { 'ae', 'CopilotChatExplain', desc = 'Explain' }, - { 'af', 'CopilotChatFix', desc = 'Fix' }, - { 'ag', 'CopilotChatCommit', desc = 'Commit' }, - { 'ao', 'CopilotChatOptimize', desc = 'Optimize' }, - { 'ar', 'CopilotChatReview', desc = 'Review' }, - { 'at', 'CopilotChatTests', desc = 'Tests' }, +local a = vim.deepcopy(i) +for k, v in pairs(a) do + a[k] = v:gsub(' including.*', '') +end - { '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' }, +local ic = vim.deepcopy(i) +local ac = vim.deepcopy(a) - { 'g', group = ' Git' }, - { 'ga', 'Gitsigns stage_hunk', desc = 'Stage Hunk' }, - { 'gr', 'Gitsigns reset_hunk', desc = 'Reset Hunk' }, +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 - { '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', - }, +local opts = { + mode = 'n', + prefix = '', + buffer = nil, + silent = true, + noremap = true, + nowait = true, +} - { 'l', group = ' LSP' }, - { 'la', desc = 'Lspsaga range_code_action' }, +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, %Y, %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' }, - { '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', - }, + ['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' }, - { 'y', group = ' Yank' }, - { 'yg', 'lua require"gitlinker".get_buf_range_url("v")', desc = 'Copy Git URL' }, + 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' }, + }, + + 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' }, + s = { 'c', 'Close Split' }, + 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' }, + d = { 'Sterm dexe', 'Exe Launcher' }, + n = { 'Sterm node', 'Node' }, + p = { 'Sterm bpython', 'Python' }, + r = { 'Sterm irb', 'Ruby' }, + s = { 'Sterm', 'Horizontal Terminal' }, + t = { 'Fterm', 'Terminal' }, + v = { 'Vterm', 'Vertical Terminal' }, + w = { 'Sterm dexe --wait-before-exit', 'Exe Launcher, Wait' }, + }, + u = { + name = icons.ui.Test .. 'Test', + c = { 'lua require("neotest").run.run()', 'Run Current Test' }, + f = { 'lua require("neotest").run.run(vim.fn.expand("%"))', 'Run Test File' }, + o = { 'Neotest output-panel', 'Test Output' }, + s = { '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' }, + }, +} + +local vopts = { + mode = 'v', + prefix = '', + buffer = nil, + silent = true, + noremap = true, + nowait = true, +} + +local vmappings = { + 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, } local no_leader_mappings = { - { '', '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' }, + K = { 'Lspsaga hover_doc', 'LSP Hover' }, + Q = { 'qall!', 'Force Quit!' }, + U = { 'redo', 'Redo' }, - { '', 'h', desc = 'Move Left' }, - { '', 'j', desc = 'Move Down' }, - { '', 'k', desc = 'Move Up' }, - { '', 'l', desc = 'Move Right' }, - { '', 'p', desc = 'Previous Pane' }, + [''] = { 'bprevious', 'Previous Buffer' }, + [''] = { 'bnext', 'Next Buffer' }, - { '', 'bprevious', desc = 'Previous Buffer' }, - { '', 'bnext', desc = 'Next Buffer' }, + [''] = { 'Telescope find_files', 'Find Files' }, + [''] = { 'Fterm lazygit', 'Lazygit' }, - { 'K', 'Lspsaga hover_doc', desc = 'LSP Hover' }, - { 'Q', 'qall!', desc = 'Force Quit!' }, - { 'U', 'redo', desc = 'Redo' }, + [''] = { 'h', 'Move Left' }, + [''] = { 'j', 'Move Down' }, + [''] = { 'k', 'Move Up' }, + [''] = { 'l', 'Move Right' }, + [''] = { 'p', 'Previous Pane' }, - { '[', 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' }, + [''] = { 'resize +10', 'Increase window height' }, + [''] = { 'resize -10', 'Decrease window height' }, + [''] = { 'vertical resize -10', 'Decrease window width' }, + [''] = { 'vertical resize +10', 'Increase window width' }, - { ']', 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' }, + ['['] = { + 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' }, + }, } if vim.fn.exists('$TMUX') == 1 then local tmux_mappings = { - { '', 'NavigatorLeft', desc = 'Move Left' }, - { '', 'NavigatorDown', desc = 'Move Down' }, - { '', 'NavigatorUp', desc = 'Move Up' }, - { '', 'NavigatorRight', desc = 'Move Right' }, - { '', 'NavigatorPrevious', desc = 'Previous Pane' }, + [''] = { 'NavigatorLeft', 'Move Left' }, + [''] = { 'NavigatorDown', 'Move Down' }, + [''] = { 'NavigatorUp', 'Move Up' }, + [''] = { 'NavigatorRight', 'Move Right' }, + [''] = { 'NavigatorPrevious', 'Previous Pane' }, } no_leader_mappings = vim.tbl_extend('force', no_leader_mappings, tmux_mappings) end which_key.setup(setup) -which_key.add(n_mappings, v_mappings, no_leader_mappings) +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 })