summaryrefslogtreecommitdiff
path: root/lua/plugins/picker.lua
blob: 478a6898dc4ad4a888235dd9c818b607686e54b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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,
    },
}