minimal extui fuzzy finder for neovim

feat(builtins): add livegrep builtin

+34
+34
lua/artio/builtins.lua
··· 57 57 }) 58 58 end 59 59 60 + builtins.livegrep = function() 61 + local win = vim.api.nvim_get_current_win() 62 + local buf = vim.api.nvim_win_get_buf(win) 63 + local n = vim.api.nvim_buf_line_count(buf) 64 + local lst = {} ---@type integer[] 65 + for i = 1, n do 66 + lst[#lst + 1] = i 67 + end 68 + 69 + local pad = #tostring(lst[#lst]) 70 + 71 + return artio.generic(lst, { 72 + prompt = "livegrep", 73 + on_close = function(row, _) 74 + vim.schedule(function() 75 + vim.api.nvim_win_set_cursor(win, { row, 0 }) 76 + end) 77 + end, 78 + format_item = function(row) 79 + return vim.api.nvim_buf_get_lines(buf, row - 1, row, true)[1] 80 + end, 81 + preview_item = function(row) 82 + return buf, function(w) 83 + vim.api.nvim_set_option_value('cursorline', true, { scope = 'local', win = w }) 84 + vim.api.nvim_win_set_cursor(w, { row, 0 }) 85 + end 86 + end, 87 + get_icon = function(row) 88 + local v = tostring(row.v) 89 + return ("%s%s"):format((" "):rep(pad - #v), v) 90 + end, 91 + }) 92 + end 93 + 60 94 local function find_helptags() 61 95 local buf = vim.api.nvim_create_buf(false, true) 62 96 vim.bo[buf].buftype = "help"