summaryrefslogtreecommitdiff
path: root/lua/mo/fzf.lua
blob: c5c4b3ea7c93752d6b30945e50bd56cfee9898c9 (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
--- @diagnostic disable: missing-fields
local fzf = require("fzf-lua")

local swiper = {
    previewer = "swiper",
    winopts = function()
        local height = math.ceil(vim.o.lines / 3)
        return { split = ("botright %snew +set\\ nobl"):format(height) }
    end,
}

fzf.setup({
    { "default-title", "hide" },
    fzf_colors = true,
    lsp = {
        symbols = { symbol_style = 3 },
        document_symbols = swiper,
        code_actions = { previewer = "codeaction_native" },
    },
    manpages = { previewer = "man_native" },
    helptags = { previewer = "help_native" },
    defaults = { git_icons = false, file_icons = false },
    tags = { previewer = "bat" },
    btags = { previewer = "bat" },
    files = { fzf_opts = { ["--ansi"] = false } },
    grep = {
        fzf_opts = { ["--ansi"] = false },
        rg_glob = true,
        rg_opts = " --color=never --column --line-number --no-heading --smart-case --max-columns=4096 -e",
    },
    builtin = { winopts = { width = 1, height = 1 } },
    blines = swiper,
    grep_curbuf = swiper,
    treesitter = swiper,
    git = { blame = swiper },

    winopts = function()
        local height = math.ceil(vim.o.lines / 2)
        return {
            backdrop = 80,
            row = 1,
            col = 0,
            width = 1,
            height = height > 3 and height or 1,
            border = {"", " ", "", "", "", "", "", ""},
            toggle_behavior = "extend",
            --- @diagnostic disable-next-line: missing-fields
            preview = {
                default = { "bat" },
                treesitter = false,
                layout = "vertical",
                vertical = "up:60%",
                border = {"", " ", "", "", "", "", "", ""},
            },
            on_create = function()
                vim.keymap.set(
                    "t",
                    "<C-r>",
                    [['<C-\><C-N>"'.nr2char(getchar()).'pi']],
                    {
                        expr = true,
                        buffer = true,
                        desc = "insert register value into the FZF prompt",
                    }
                )
            end,
        }
    end,
    keymap = {
        fzf = {
            ["ctrl-q"] = "select-all+accept",
        },
    },
})

_G.old_vim_ui_select = vim.ui.select
fzf.register_ui_select()