diff --git a/.config/nvim/lua/plugins/picker.lua b/.config/nvim/lua/plugins/picker.lua new file mode 100644 index 0000000..aa5c015 --- /dev/null +++ b/.config/nvim/lua/plugins/picker.lua @@ -0,0 +1,540 @@ +return { + 'folke/snacks.nvim', + priority = 1000, + lazy = false, + ---@type snacks.Config + opts = { + picker = { enabled = true }, + toggle = { enabled = true }, + }, + keys = { + -- Top Pickers & Explorer + { + '', + function() + Snacks.picker.smart() + end, + desc = 'Smart Find Files', + }, + { + ',', + function() + Snacks.picker.buffers() + end, + desc = 'Buffers', + }, + { + '/', + function() + Snacks.picker.grep() + end, + desc = 'Grep', + }, + { + ':', + function() + Snacks.picker.command_history() + end, + desc = 'Command History', + }, + { + 'n', + function() + Snacks.picker.notifications() + end, + desc = 'Notification History', + }, + { + 'e', + function() + Snacks.explorer() + end, + desc = 'File Explorer', + }, + -- find + { + 'fb', + function() + Snacks.picker.buffers() + end, + desc = 'Buffers', + }, + { + 'fc', + function() + Snacks.picker.files { cwd = vim.fn.stdpath 'config' } + end, + desc = 'Find Config File', + }, + { + 'ff', + function() + Snacks.picker.files() + end, + desc = 'Find Files', + }, + { + 'fg', + function() + Snacks.picker.git_files() + end, + desc = 'Find Git Files', + }, + { + 'fp', + function() + Snacks.picker.projects() + end, + desc = 'Projects', + }, + { + 'fr', + function() + Snacks.picker.recent() + end, + desc = 'Recent', + }, + -- git + { + 'gb', + function() + Snacks.picker.git_branches() + end, + desc = 'Git Branches', + }, + { + 'gl', + function() + Snacks.picker.git_log() + end, + desc = 'Git Log', + }, + { + 'gL', + function() + Snacks.picker.git_log_line() + end, + desc = 'Git Log Line', + }, + { + 'gs', + function() + Snacks.picker.git_status() + end, + desc = 'Git Status', + }, + { + 'gS', + function() + Snacks.picker.git_stash() + end, + desc = 'Git Stash', + }, + { + 'gd', + function() + Snacks.picker.git_diff() + end, + desc = 'Git Diff (Hunks)', + }, + { + 'gf', + function() + Snacks.picker.git_log_file() + end, + desc = 'Git Log File', + }, + -- gh + { + 'gi', + function() + Snacks.picker.gh_issue() + end, + desc = 'GitHub Issues (open)', + }, + { + 'gI', + function() + Snacks.picker.gh_issue { state = 'all' } + end, + desc = 'GitHub Issues (all)', + }, + { + 'gp', + function() + Snacks.picker.gh_pr() + end, + desc = 'GitHub Pull Requests (open)', + }, + { + 'gP', + function() + Snacks.picker.gh_pr { state = 'all' } + end, + desc = 'GitHub Pull Requests (all)', + }, + -- Grep + { + 'sb', + function() + Snacks.picker.lines() + end, + desc = 'Buffer Lines', + }, + { + 'sB', + function() + Snacks.picker.grep_buffers() + end, + desc = 'Grep Open Buffers', + }, + { + 'sg', + function() + Snacks.picker.grep() + end, + desc = 'Grep', + }, + { + 'sw', + function() + Snacks.picker.grep_word() + end, + desc = 'Visual selection or word', + mode = { 'n', 'x' }, + }, + -- search + { + 's"', + function() + Snacks.picker.registers() + end, + desc = 'Registers', + }, + { + 's/', + function() + Snacks.picker.search_history() + end, + desc = 'Search History', + }, + { + 'sa', + function() + Snacks.picker.autocmds() + end, + desc = 'Autocmds', + }, + { + 'sb', + function() + Snacks.picker.lines() + end, + desc = 'Buffer Lines', + }, + { + 'sc', + function() + Snacks.picker.command_history() + end, + desc = 'Command History', + }, + { + 'sC', + function() + Snacks.picker.commands() + end, + desc = 'Commands', + }, + { + 'sd', + function() + Snacks.picker.diagnostics() + end, + desc = 'Diagnostics', + }, + { + 'sD', + function() + Snacks.picker.diagnostics_buffer() + end, + desc = 'Buffer Diagnostics', + }, + { + 'sh', + function() + Snacks.picker.help() + end, + desc = 'Help Pages', + }, + { + 'sH', + function() + Snacks.picker.highlights() + end, + desc = 'Highlights', + }, + { + 'si', + function() + Snacks.picker.icons() + end, + desc = 'Icons', + }, + { + 'sj', + function() + Snacks.picker.jumps() + end, + desc = 'Jumps', + }, + { + 'sk', + function() + Snacks.picker.keymaps() + end, + desc = 'Keymaps', + }, + { + 'sl', + function() + Snacks.picker.loclist() + end, + desc = 'Location List', + }, + { + 'sm', + function() + Snacks.picker.marks() + end, + desc = 'Marks', + }, + { + 'sM', + function() + Snacks.picker.man() + end, + desc = 'Man Pages', + }, + { + 'sp', + function() + Snacks.picker.lazy() + end, + desc = 'Search for Plugin Spec', + }, + { + 'sq', + function() + Snacks.picker.qflist() + end, + desc = 'Quickfix List', + }, + { + 'sR', + function() + Snacks.picker.resume() + end, + desc = 'Resume', + }, + { + 'su', + function() + Snacks.picker.undo() + end, + desc = 'Undo History', + }, + { + 'uC', + function() + Snacks.picker.colorschemes() + end, + desc = 'Colorschemes', + }, + -- LSP + { + 'gd', + function() + Snacks.picker.lsp_definitions() + end, + desc = 'Goto Definition', + }, + { + 'gD', + function() + Snacks.picker.lsp_declarations() + end, + desc = 'Goto Declaration', + }, + { + 'gr', + function() + Snacks.picker.lsp_references() + end, + nowait = true, + desc = 'References', + }, + { + 'gI', + function() + Snacks.picker.lsp_implementations() + end, + desc = 'Goto Implementation', + }, + { + 'gy', + function() + Snacks.picker.lsp_type_definitions() + end, + desc = 'Goto T[y]pe Definition', + }, + { + 'gai', + function() + Snacks.picker.lsp_incoming_calls() + end, + desc = 'C[a]lls Incoming', + }, + { + 'gao', + function() + Snacks.picker.lsp_outgoing_calls() + end, + desc = 'C[a]lls Outgoing', + }, + { + 'ss', + function() + Snacks.picker.lsp_symbols() + end, + desc = 'LSP Symbols', + }, + { + 'sS', + function() + Snacks.picker.lsp_workspace_symbols() + end, + desc = 'LSP Workspace Symbols', + }, + -- Other + { + 'z', + function() + Snacks.zen() + end, + desc = 'Toggle Zen Mode', + }, + { + 'Z', + function() + Snacks.zen.zoom() + end, + desc = 'Toggle Zoom', + }, + { + '.', + function() + Snacks.scratch() + end, + desc = 'Toggle Scratch Buffer', + }, + { + 'S', + function() + Snacks.scratch.select() + end, + desc = 'Select Scratch Buffer', + }, + { + 'n', + function() + Snacks.notifier.show_history() + end, + desc = 'Notification History', + }, + { + 'bd', + function() + Snacks.bufdelete() + end, + desc = 'Delete Buffer', + }, + { + 'cR', + function() + Snacks.rename.rename_file() + end, + desc = 'Rename File', + }, + { + 'gB', + function() + Snacks.gitbrowse() + end, + desc = 'Git Browse', + mode = { 'n', 'v' }, + }, + { + 'gg', + function() + Snacks.lazygit() + end, + desc = 'Lazygit', + }, + { + 'un', + function() + Snacks.notifier.hide() + end, + desc = 'Dismiss All Notifications', + }, + { + '', + function() + Snacks.terminal() + end, + desc = 'Toggle Terminal', + }, + { + '', + function() + Snacks.terminal() + end, + desc = 'which_key_ignore', + }, + { + ']]', + function() + Snacks.words.jump(vim.v.count1) + end, + desc = 'Next Reference', + mode = { 'n', 't' }, + }, + { + '[[', + function() + Snacks.words.jump(-vim.v.count1) + end, + desc = 'Prev Reference', + mode = { 'n', 't' }, + }, + { + 'N', + desc = 'Neovim News', + function() + Snacks.win { + file = vim.api.nvim_get_runtime_file('doc/news.txt', false)[1], + width = 0.6, + height = 0.6, + wo = { + spell = false, + wrap = false, + signcolumn = 'yes', + statuscolumn = ' ', + conceallevel = 3, + }, + } + end, + }, + }, +} diff --git a/.config/nvim/lua/plugins/snacks.lua b/.config/nvim/lua/plugins/snacks.lua index 508335d..7398777 100644 --- a/.config/nvim/lua/plugins/snacks.lua +++ b/.config/nvim/lua/plugins/snacks.lua @@ -44,7 +44,6 @@ return { style = "lazygit", }, }, - picker = { enabled = true }, quickfile = { enabled = true }, words = { enabled = true }, styles = { @@ -54,534 +53,6 @@ return { }, }, keys = { - -- Top Pickers & Explorer - { - '', - function() - Snacks.picker.smart() - end, - desc = 'Smart Find Files', - }, - { - ',', - function() - Snacks.picker.buffers() - end, - desc = 'Buffers', - }, - { - '/', - function() - Snacks.picker.grep() - end, - desc = 'Grep', - }, - { - ':', - function() - Snacks.picker.command_history() - end, - desc = 'Command History', - }, - { - 'n', - function() - Snacks.picker.notifications() - end, - desc = 'Notification History', - }, - { - 'e', - function() - Snacks.explorer() - end, - desc = 'File Explorer', - }, - -- find - { - 'fb', - function() - Snacks.picker.buffers() - end, - desc = 'Buffers', - }, - { - 'fc', - function() - Snacks.picker.files { cwd = vim.fn.stdpath 'config' } - end, - desc = 'Find Config File', - }, - { - 'ff', - function() - Snacks.picker.files() - end, - desc = 'Find Files', - }, - { - 'fg', - function() - Snacks.picker.git_files() - end, - desc = 'Find Git Files', - }, - { - 'fp', - function() - Snacks.picker.projects() - end, - desc = 'Projects', - }, - { - 'fr', - function() - Snacks.picker.recent() - end, - desc = 'Recent', - }, - -- git - { - 'gb', - function() - Snacks.picker.git_branches() - end, - desc = 'Git Branches', - }, - { - 'gl', - function() - Snacks.picker.git_log() - end, - desc = 'Git Log', - }, - { - 'gL', - function() - Snacks.picker.git_log_line() - end, - desc = 'Git Log Line', - }, - { - 'gs', - function() - Snacks.picker.git_status() - end, - desc = 'Git Status', - }, - { - 'gS', - function() - Snacks.picker.git_stash() - end, - desc = 'Git Stash', - }, - { - 'gd', - function() - Snacks.picker.git_diff() - end, - desc = 'Git Diff (Hunks)', - }, - { - 'gf', - function() - Snacks.picker.git_log_file() - end, - desc = 'Git Log File', - }, - -- gh - { - 'gi', - function() - Snacks.picker.gh_issue() - end, - desc = 'GitHub Issues (open)', - }, - { - 'gI', - function() - Snacks.picker.gh_issue { state = 'all' } - end, - desc = 'GitHub Issues (all)', - }, - { - 'gp', - function() - Snacks.picker.gh_pr() - end, - desc = 'GitHub Pull Requests (open)', - }, - { - 'gP', - function() - Snacks.picker.gh_pr { state = 'all' } - end, - desc = 'GitHub Pull Requests (all)', - }, - -- Grep - { - 'sb', - function() - Snacks.picker.lines() - end, - desc = 'Buffer Lines', - }, - { - 'sB', - function() - Snacks.picker.grep_buffers() - end, - desc = 'Grep Open Buffers', - }, - { - 'sg', - function() - Snacks.picker.grep() - end, - desc = 'Grep', - }, - { - 'sw', - function() - Snacks.picker.grep_word() - end, - desc = 'Visual selection or word', - mode = { 'n', 'x' }, - }, - -- search - { - 's"', - function() - Snacks.picker.registers() - end, - desc = 'Registers', - }, - { - 's/', - function() - Snacks.picker.search_history() - end, - desc = 'Search History', - }, - { - 'sa', - function() - Snacks.picker.autocmds() - end, - desc = 'Autocmds', - }, - { - 'sb', - function() - Snacks.picker.lines() - end, - desc = 'Buffer Lines', - }, - { - 'sc', - function() - Snacks.picker.command_history() - end, - desc = 'Command History', - }, - { - 'sC', - function() - Snacks.picker.commands() - end, - desc = 'Commands', - }, - { - 'sd', - function() - Snacks.picker.diagnostics() - end, - desc = 'Diagnostics', - }, - { - 'sD', - function() - Snacks.picker.diagnostics_buffer() - end, - desc = 'Buffer Diagnostics', - }, - { - 'sh', - function() - Snacks.picker.help() - end, - desc = 'Help Pages', - }, - { - 'sH', - function() - Snacks.picker.highlights() - end, - desc = 'Highlights', - }, - { - 'si', - function() - Snacks.picker.icons() - end, - desc = 'Icons', - }, - { - 'sj', - function() - Snacks.picker.jumps() - end, - desc = 'Jumps', - }, - { - 'sk', - function() - Snacks.picker.keymaps() - end, - desc = 'Keymaps', - }, - { - 'sl', - function() - Snacks.picker.loclist() - end, - desc = 'Location List', - }, - { - 'sm', - function() - Snacks.picker.marks() - end, - desc = 'Marks', - }, - { - 'sM', - function() - Snacks.picker.man() - end, - desc = 'Man Pages', - }, - { - 'sp', - function() - Snacks.picker.lazy() - end, - desc = 'Search for Plugin Spec', - }, - { - 'sq', - function() - Snacks.picker.qflist() - end, - desc = 'Quickfix List', - }, - { - 'sR', - function() - Snacks.picker.resume() - end, - desc = 'Resume', - }, - { - 'su', - function() - Snacks.picker.undo() - end, - desc = 'Undo History', - }, - { - 'uC', - function() - Snacks.picker.colorschemes() - end, - desc = 'Colorschemes', - }, - -- LSP - { - 'gd', - function() - Snacks.picker.lsp_definitions() - end, - desc = 'Goto Definition', - }, - { - 'gD', - function() - Snacks.picker.lsp_declarations() - end, - desc = 'Goto Declaration', - }, - { - 'gr', - function() - Snacks.picker.lsp_references() - end, - nowait = true, - desc = 'References', - }, - { - 'gI', - function() - Snacks.picker.lsp_implementations() - end, - desc = 'Goto Implementation', - }, - { - 'gy', - function() - Snacks.picker.lsp_type_definitions() - end, - desc = 'Goto T[y]pe Definition', - }, - { - 'gai', - function() - Snacks.picker.lsp_incoming_calls() - end, - desc = 'C[a]lls Incoming', - }, - { - 'gao', - function() - Snacks.picker.lsp_outgoing_calls() - end, - desc = 'C[a]lls Outgoing', - }, - { - 'ss', - function() - Snacks.picker.lsp_symbols() - end, - desc = 'LSP Symbols', - }, - { - 'sS', - function() - Snacks.picker.lsp_workspace_symbols() - end, - desc = 'LSP Workspace Symbols', - }, - -- Other - { - 'z', - function() - Snacks.zen() - end, - desc = 'Toggle Zen Mode', - }, - { - 'Z', - function() - Snacks.zen.zoom() - end, - desc = 'Toggle Zoom', - }, - { - '.', - function() - Snacks.scratch() - end, - desc = 'Toggle Scratch Buffer', - }, - { - 'S', - function() - Snacks.scratch.select() - end, - desc = 'Select Scratch Buffer', - }, - { - 'n', - function() - Snacks.notifier.show_history() - end, - desc = 'Notification History', - }, - { - 'bd', - function() - Snacks.bufdelete() - end, - desc = 'Delete Buffer', - }, - { - 'cR', - function() - Snacks.rename.rename_file() - end, - desc = 'Rename File', - }, - { - 'gB', - function() - Snacks.gitbrowse() - end, - desc = 'Git Browse', - mode = { 'n', 'v' }, - }, - { - 'gg', - function() - Snacks.lazygit() - end, - desc = 'Lazygit', - }, - { - 'un', - function() - Snacks.notifier.hide() - end, - desc = 'Dismiss All Notifications', - }, - { - '', - function() - Snacks.terminal() - end, - desc = 'Toggle Terminal', - }, - { - '', - function() - Snacks.terminal() - end, - desc = 'which_key_ignore', - }, - { - ']]', - function() - Snacks.words.jump(vim.v.count1) - end, - desc = 'Next Reference', - mode = { 'n', 't' }, - }, - { - '[[', - function() - Snacks.words.jump(-vim.v.count1) - end, - desc = 'Prev Reference', - mode = { 'n', 't' }, - }, - { - 'N', - desc = 'Neovim News', - function() - Snacks.win { - file = vim.api.nvim_get_runtime_file('doc/news.txt', false)[1], - width = 0.6, - height = 0.6, - wo = { - spell = false, - wrap = false, - signcolumn = 'yes', - statuscolumn = ' ', - conceallevel = 3, - }, - } - end, - }, }, init = function() vim.api.nvim_create_autocmd('User', {