summaryrefslogtreecommitdiff
path: root/lua/plugins/picker.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/plugins/picker.lua')
-rw-r--r--lua/plugins/picker.lua142
1 files changed, 142 insertions, 0 deletions
diff --git a/lua/plugins/picker.lua b/lua/plugins/picker.lua
new file mode 100644
index 0000000..478a689
--- /dev/null
+++ b/lua/plugins/picker.lua
@@ -0,0 +1,142 @@
+local mini = function(key, action, desc)
+ return {
+ key,
+ "<cmd>Pick " .. action .. "<CR>",
+ mode = { "n" },
+ desc = desc,
+ }
+end
+
+local telescope_builtin = function(key, action, desc)
+ return {
+ key,
+ "<cmd>Telescope " .. action .. "<CR>",
+ mode = { "n" },
+ desc = desc,
+ }
+end
+
+return {
+ {
+ "mini.pick",
+ for_cat = "core.picker.mini",
+ event = "DeferredUIEnter",
+ keys = {
+ mini("<leader>ff", "files", "finde files"),
+ mini("<leader>fb", "buffers", "Find open buffers"),
+ mini("<leader>fh", "help", "Find help"),
+ mini("<leader>/", "grep_live", "Live grep"),
+
+ -- MiniExtra
+ mini("<leader>fd", "diagnostic", "Diagnostics"),
+ mini("<leader>fgb", "git_branches", "Git branches"),
+ mini("<leader>fc", "git_commits", "Git commits"),
+
+ -- LSP scopes
+ mini("<leader>fr", "lsp scope='references'", "LSP references"),
+ mini("<leader>ds", "lsp scope='document_symbol'", "Document symbols"),
+ mini("<leader>ws", "lsp scope='workspace_symbol'", "Workspace symbols"),
+
+ mini("ld", "lsp scope='definition'", "Goto definition"),
+ mini("ltd", "lsp scope='type_definition'", "Goto type definition"),
+ mini("lD", "lsp scope='declaration'", "Goto declaration"),
+ mini("lr", "lsp scope='references'", "Goto references"),
+ mini("lI", "lsp scope='implementation'", "Goto implementation"),
+ },
+ load = function(name)
+ require("lzextras").loaders.multi({
+ name,
+ "mini.extra",
+ })
+ end,
+ after = function()
+ require("mini.pick").setup()
+ end,
+ },
+ {
+ "telescope.nvim",
+ event = "DeferredUIEnter",
+ for_cat = "core.picker.telescope",
+ keys = {
+ telescope_builtin("<leader>ff", "find_files", "Search files in cwd"),
+ telescope_builtin("<leader>fb", "buffers", "Search files in cwd"),
+ telescope_builtin("<leader>fo", "oldfiles", "Recent files"),
+ telescope_builtin("<leader>fr", "registers", "Registers"),
+ telescope_builtin("<leader>fj", "jumplist", "Jump list"),
+ telescope_builtin("<leader>fm", "marks", "Marks"),
+
+ telescope_builtin("<leader>fq", "quickfix", "Quickfix list"),
+ telescope_builtin("<leader>fl", "loclist", "Location list"),
+
+ telescope_builtin("<leader>st", "treesitter", "Treesitter symbols"),
+
+ telescope_builtin("<leader>sc", "commands", "Commands"),
+ telescope_builtin("<leader>sp", "spell_suggest", "Spell suggestions"),
+
+ telescope_builtin("<leader>sg", "live_grep", "Search by grep"),
+ telescope_builtin("<leader>ss", "grep_string", "Search string"),
+ telescope_builtin("<leader>sk", "keymaps", "Search keymaps"),
+ telescope_builtin("<leader>sh", "help_tags", "Search help tags"),
+ telescope_builtin("<leader>/", "current_buffer_fuzzy_find", "Search in current buffer"),
+
+ telescope_builtin("<leader>gc", "git_commits", "Git commits"),
+ telescope_builtin("<leader>gB", "git_branches", "Git branches"),
+ telescope_builtin("<leader>gs", "git_status", "Git status"),
+ telescope_builtin("<leader>gS", "git_stash", "Git stash"),
+
+ telescope_builtin("<leader>ls", "lsp_document_symbols", "Document symbols"),
+ telescope_builtin("<leader>lS", "lsp_workspace_symbols", "Workspace symbols"),
+ telescope_builtin("<leader>lds", "lsp_dynamic_workspace_symbols", "Workspace symbols"),
+ telescope_builtin("<leader>ld", "diagnostics", "Diagnostics"),
+ telescope_builtin("<leader>lD", "lsp_definitions", "LSP definitions"),
+ telescope_builtin("<leader>li", "lsp_incoming_calls", "LSP incoming calls"),
+ telescope_builtin("<leader>lo", "lsp_outgoing_calls", "LSP outgoing calls"),
+ telescope_builtin("<leader>lt", "lsp_type_definitions", "LSP type definitions"),
+ telescope_builtin("grr", "lsp_references", "LSP references"),
+ telescope_builtin("gri", "lsp_implementations", "LSP implementations"),
+ },
+ load = function(name)
+ require("lzextras").loaders.multi({
+ name,
+ "telescope-fzf-native.nvim",
+ "telescope-ui-select.nvim",
+ })
+ end,
+ after = function()
+ require("telescope").setup({
+ defaults = {
+ mappings = {
+ i = {
+ ["<M-Enter>"] = "to_fuzzy_refine",
+ },
+ },
+ },
+ pickers = {
+ buffers = {
+ mappings = {
+ i = {
+ -- ["<C-d>"] = "delete_buffer",
+ },
+ n = {
+ ["d"] = "delete_buffer",
+ },
+ },
+ },
+ },
+ extensions = {
+ fzf = {
+ fuzzy = true,
+ override_generic_sorter = true,
+ override_file_sorter = true,
+ case_mode = "smart_case",
+ },
+ ["ui-select"] = {
+ require("telescope.themes").get_dropdown({}),
+ },
+ },
+ })
+ require("telescope").load_extension("fzf")
+ require("telescope").load_extension("ui-select")
+ end,
+ },
+}