minimal extui fuzzy finder for neovim

feat(builtins): add qflist action to other builtins

+44 -13
+44 -13
lua/artio/builtins.lua
··· 45 46 local builtins = {} 47 48 local findprg = "fd -H -p -t f --color=never" 49 50 builtins.files = function(props) ··· 69 return vim.fn.bufadd(item) 70 end, 71 actions = { 72 - setqflist = function(self, co) 73 - vim.fn.setqflist(vim 74 - .iter(ipairs(self.matches)) 75 - :map(function(_, match) 76 - local item = self.items[match[1]] 77 - return { filename = item.v } 78 - end) 79 - :totable()) 80 - vim.schedule(function() 81 - vim.cmd.copen() 82 - end) 83 - coroutine.resume(co, 1) 84 - end, 85 }, 86 mappings = { 87 ["<c-q>"] = "setqflist", ··· 141 get_icon = config.get().opts.use_icons and function(item) 142 return require("mini.icons").get("file", item.v[1]) 143 end or nil, 144 }, props)) 145 end 146 ··· 172 preview_item = function(item) 173 return vim.fn.bufadd(item) 174 end, 175 }, props) 176 ) 177 end ··· 347 preview_item = function(item) 348 return vim.fn.bufadd(item) 349 end, 350 }, props)) 351 end 352
··· 45 46 local builtins = {} 47 48 + local function make_setqflist(fn) 49 + return function(self, co) 50 + vim.fn.setqflist(vim 51 + .iter(ipairs(self.matches)) 52 + :map(function(_, match) 53 + local item = self.items[match[1]] 54 + local qfitem = fn(item) 55 + return qfitem 56 + end) 57 + :totable()) 58 + vim.schedule(function() 59 + vim.cmd.copen() 60 + end) 61 + coroutine.resume(co, 1) 62 + end 63 + end 64 + 65 local findprg = "fd -H -p -t f --color=never" 66 67 builtins.files = function(props) ··· 86 return vim.fn.bufadd(item) 87 end, 88 actions = { 89 + setqflist = make_setqflist(function(item) 90 + return { filename = item.v } 91 + end), 92 }, 93 mappings = { 94 ["<c-q>"] = "setqflist", ··· 148 get_icon = config.get().opts.use_icons and function(item) 149 return require("mini.icons").get("file", item.v[1]) 150 end or nil, 151 + actions = { 152 + setqflist = make_setqflist(function(item) 153 + return { filename = item.v[1], lnum = item.v[2], col = item.v[3] } 154 + end), 155 + }, 156 + mappings = { 157 + ["<c-q>"] = "setqflist", 158 + }, 159 }, props)) 160 end 161 ··· 187 preview_item = function(item) 188 return vim.fn.bufadd(item) 189 end, 190 + actions = { 191 + setqflist = make_setqflist(function(item) 192 + return { filename = item.v } 193 + end), 194 + }, 195 + mappings = { 196 + ["<c-q>"] = "setqflist", 197 + }, 198 }, props) 199 ) 200 end ··· 370 preview_item = function(item) 371 return vim.fn.bufadd(item) 372 end, 373 + actions = { 374 + setqflist = make_setqflist(function(item) 375 + return { filename = item.v } 376 + end), 377 + }, 378 + mappings = { 379 + ["<c-q>"] = "setqflist", 380 + }, 381 }, props)) 382 end 383