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 |