diff --git a/vis/.config/vis/fast-jump.lua b/vis/.config/vis/fast-jump.lua index cf2d097..96c8154 100644 --- a/vis/.config/vis/fast-jump.lua +++ b/vis/.config/vis/fast-jump.lua @@ -10,7 +10,7 @@ local function search(p) return Ct(((1 - p)^0 * Cp() * p)^0) end -local up = { +local up_keys = { 'a', 's', 'd', 'f' , 'q', 'w', 'e', 'r', 't', 'g', 'z', 'x', 'c', 'v', 'b', @@ -22,7 +22,7 @@ local up = { '`', '~', } -local down = { +local down_keys = { 'j', 'k', 'l', ';', 'y', 'u', 'i', 'o', 'p', 'n', 'm', ',', '.', '/', @@ -34,6 +34,22 @@ local down = { "'", '"', '\\', '|', } +local function merge(a, b) + local c = {} + for i = 1, #a do + c[i] = a[i] + end + for i = 1, #b do + c[#a + i] = b[i] + end + return c +end + +local mu = #up_keys +local md = #down_keys +local up = merge(up_keys, down_keys) +local down = merge(down_keys, up_keys) + local jumps = {} local function jump(keys) @@ -78,8 +94,13 @@ local function jump(keys) break end end + local nu = prev + local nd = #lst - next local j = 1 for i = prev, 1, -1 do + if j == mu + 1 then + j = j + nd + end if not up[j] then break end @@ -89,6 +110,9 @@ local function jump(keys) end j = 1 for i = next, #lst do + if j == md + 1 then + j = j + nu + end if not down[j] then break end