summaryrefslogtreecommitdiff
path: root/fedora/.config/yazi/plugins/jump-to-char.yazi/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'fedora/.config/yazi/plugins/jump-to-char.yazi/main.lua')
-rw-r--r--fedora/.config/yazi/plugins/jump-to-char.yazi/main.lua32
1 files changed, 32 insertions, 0 deletions
diff --git a/fedora/.config/yazi/plugins/jump-to-char.yazi/main.lua b/fedora/.config/yazi/plugins/jump-to-char.yazi/main.lua
new file mode 100644
index 0000000..8a434f1
--- /dev/null
+++ b/fedora/.config/yazi/plugins/jump-to-char.yazi/main.lua
@@ -0,0 +1,32 @@
+--- @since 25.5.31
+
+local AVAILABLE_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."
+
+local changed = ya.sync(function(st, new)
+ local b = st.last ~= new
+ st.last = new
+ return b or not cx.active.finder
+end)
+
+local escape = function(s) return s == "." and "\\." or s 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
+
+ local kw = escape(cands[idx].on)
+ if changed(kw) then
+ ya.emit("find_do", { "^" .. kw })
+ else
+ ya.emit("find_arrow", {})
+ end
+ end,
+}