summaryrefslogtreecommitdiff
path: root/debian/.config/yazi/plugins/jump-to-char.yazi/main.lua
diff options
context:
space:
mode:
authorTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-12-24 13:54:03 +0900
committerTheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com>2025-12-24 13:54:03 +0900
commit28e8bdf7f8286bd431b7f3b709e79f3827b31469 (patch)
tree85b44eff6da4d8443198fb6e04dfb6ee55244588 /debian/.config/yazi/plugins/jump-to-char.yazi/main.lua
parent8470ff001befcfd0f626dea69a9e76d43aee0511 (diff)
updates
Diffstat (limited to 'debian/.config/yazi/plugins/jump-to-char.yazi/main.lua')
-rw-r--r--debian/.config/yazi/plugins/jump-to-char.yazi/main.lua32
1 files changed, 32 insertions, 0 deletions
diff --git a/debian/.config/yazi/plugins/jump-to-char.yazi/main.lua b/debian/.config/yazi/plugins/jump-to-char.yazi/main.lua
new file mode 100644
index 0000000..8a434f1
--- /dev/null
+++ b/debian/.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,
+}