all repos — dotfiles @ 3a22acc86db422b92f00f3b73fd86fcbf8d6395b

my *nix dotfiles

nvim/lua/fuzzy/fuzzy.lua (view raw)

 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
local M = {}
local api = vim.api
local o = vim.o
local fn = vim.fn

function M.fuzzy_search(cmd, exit_fn)
    local width = o.columns - 4
    local height = 11
    if (o.columns >= 85) then
        width = 80
    end

    local buf = api.nvim_create_buf(false, true)
    api.nvim_buf_set_option(buf, 'bufhidden', 'wipe')
    api.nvim_buf_set_option(buf, 'modifiable', true)

    api.nvim_open_win(
        buf,
        true,
        {
            relative = 'editor',
            style = 'minimal',
            noautocmd = true,
            border = 'rounded',
            width = width,
            height = height,
            col = math.min((o.columns - width) / 2),
            row = math.min((o.lines - height) / 2 - 1),
        }
    )
    local file = vim.fn.tempname()
    api.nvim_command('startinsert!')

    vim.fn.termopen(cmd .. ' > ' .. file, {on_exit = function()
        local f = io.open(file, 'r')
        local stdout = f:read('*all')
        exit_fn(stdout)
        f:close()
        os.remove(file)
    end})
end
return M