tangled
alpha
login
or
join now
robinwobin.dev
/
artio.nvim
3
fork
atom
minimal extui fuzzy finder for neovim
3
fork
atom
overview
issues
pulls
pipelines
feat(builtins): add smart fuzzy finder
robinwobin.dev
4 months ago
23db0597
64f33da9
+42
1 changed file
expand all
collapse all
unified
split
lua
artio
builtins.lua
+42
lua/artio/builtins.lua
···
175
175
})
176
176
end
177
177
178
178
+
builtins.smart = function()
179
179
+
local lst = find_files()
180
180
+
181
181
+
local pwd = vim.fn.getcwd()
182
182
+
local recentlst = vim
183
183
+
.iter(find_buffers())
184
184
+
:map(function(buf)
185
185
+
local v = vim.api.nvim_buf_get_name(buf)
186
186
+
return vim.fs.relpath(pwd, v) or v
187
187
+
end)
188
188
+
:totable()
189
189
+
190
190
+
return artio.pick({
191
191
+
prompt = "smart",
192
192
+
items = vim.tbl_keys(vim.iter({ lst, recentlst }):fold({}, function(items, l)
193
193
+
for i = 1, #l do
194
194
+
items[l[i]] = true
195
195
+
end
196
196
+
return items
197
197
+
end)),
198
198
+
fn = artio.mergesorters(artio.sorter, function(l, _)
199
199
+
return vim
200
200
+
.iter(l)
201
201
+
:map(function(v)
202
202
+
return { v.id, {}, vim.tbl_contains(recentlst, v.text) and 100 or 0 }
203
203
+
end)
204
204
+
:totable()
205
205
+
end),
206
206
+
on_close = function(text, _)
207
207
+
vim.schedule(function()
208
208
+
vim.cmd.edit(text)
209
209
+
end)
210
210
+
end,
211
211
+
get_icon = config.get().opts.use_icons and function(item)
212
212
+
return require("mini.icons").get("file", item.v)
213
213
+
end or nil,
214
214
+
preview_item = function(item)
215
215
+
return vim.fn.bufadd(item)
216
216
+
end,
217
217
+
})
218
218
+
end
219
219
+
178
220
return builtins