summaryrefslogtreecommitdiff
path: root/lua/plugins/picker.lua
blob: bf60d6a4429c9ee95b9e71bcd2f55c8a3befad22 (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
local telescope_builtin = function(key, action, desc)
    return {
        key,
        "<cmd>Telescope " .. action .. "<CR>",
        mode = { "n" },
        desc = desc,
    }
end

return {
    {
        "telescope.nvim",
        event = "DeferredUIEnter",
        for_cat = "core.picker",
        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,
    },
}