minimal extui fuzzy finder for neovim

fix(builtins): adjust smart builtin

- show only items from recents list when no input
- pass items with abs path -> format with `getcwd(0)`

+20 -10
+20 -10
lua/artio/builtins.lua
··· 338 338 cwd = base_dir, 339 339 })() 340 340 341 - local pwd = vim.fn.getcwd() 342 341 local recentlst = vim 343 342 .iter(find_buffers()) 344 343 :map(function(buf) 345 344 local v = vim.api.nvim_buf_get_name(buf) 346 - return vim.fs.relpath(pwd, v) or v 345 + return vim.fs.abspath(v) 347 346 end) 348 347 :totable() 349 348 349 + local items = vim.list.unique(vim.iter({ lst, recentlst }):flatten(1):totable()) 350 + 350 351 return artio.pick(extend({ 351 352 prompt = "smart", 352 - items = vim.tbl_keys(vim.iter({ lst, recentlst }):fold({}, function(items, l) 353 - for i = 1, #l do 354 - items[l[i]] = true 353 + items = items, 354 + fn = artio.mergesorters("base", function(l, input) 355 + if #input == 0 then 356 + return vim 357 + .iter(l) 358 + :map(function(v) 359 + if not vim.tbl_contains(recentlst, v.v) then 360 + return 361 + end 362 + return { v.id, {}, 0 } 363 + end) 364 + :totable() 355 365 end 356 - return items 357 - end)), 358 - fn = artio.mergesorters("base", artio.sorter, function(l, _) 366 + 367 + return artio.sorter(l, input) 368 + end, function(l, _) 359 369 return vim 360 370 .iter(l) 361 371 :map(function(v) 362 - if not vim.tbl_contains(recentlst, v.text) then 372 + if not vim.tbl_contains(recentlst, v.v) then 363 373 return 364 374 end 365 375 return { v.id, {}, 100 } ··· 369 379 return vim 370 380 .iter(l) 371 381 :map(function(v) 372 - return { v.id, {}, matchproximity(currentfile, v.text) } 382 + return { v.id, {}, matchproximity(currentfile, v.v) } 373 383 end) 374 384 :totable() 375 385 end),