28 lines
573 B
Lua
28 lines
573 B
Lua
local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
|
|
|
local changed = ya.sync(function(st, new)
|
|
local b = st.last ~= new
|
|
st.last = new
|
|
return b
|
|
end)
|
|
|
|
return {
|
|
entry = function()
|
|
local cands = {}
|
|
for i = 1, #AVAILABLE_CHARS do
|
|
cands[#cands + 1] = { on = AVAILABLE_CHARS:sub(i, i) }
|
|
end
|
|
|
|
local idx = ya.which { cands = cands, silent = true }
|
|
if not idx then
|
|
return
|
|
end
|
|
|
|
if changed(cands[idx].on) then
|
|
ya.manager_emit("find_do", { "^" .. cands[idx].on })
|
|
else
|
|
ya.manager_emit("find_arrow", {})
|
|
end
|
|
end,
|
|
}
|