Compare commits
4 Commits
4866eb3f9c
...
3f2951a1ea
| Author | SHA1 | Date | |
|---|---|---|---|
| 3f2951a1ea | |||
| b04611b199 | |||
| aeb8a78721 | |||
| 836267b80e |
@@ -10,7 +10,7 @@ local function search(p)
|
|||||||
return Ct(((1 - p)^0 * Cp() * p)^0)
|
return Ct(((1 - p)^0 * Cp() * p)^0)
|
||||||
end
|
end
|
||||||
|
|
||||||
local up = {
|
local up_keys = {
|
||||||
'a', 's', 'd', 'f' ,
|
'a', 's', 'd', 'f' ,
|
||||||
'q', 'w', 'e', 'r', 't', 'g',
|
'q', 'w', 'e', 'r', 't', 'g',
|
||||||
'z', 'x', 'c', 'v', 'b',
|
'z', 'x', 'c', 'v', 'b',
|
||||||
@@ -22,7 +22,7 @@ local up = {
|
|||||||
'`', '~',
|
'`', '~',
|
||||||
}
|
}
|
||||||
|
|
||||||
local down = {
|
local down_keys = {
|
||||||
'j', 'k', 'l', ';',
|
'j', 'k', 'l', ';',
|
||||||
'y', 'u', 'i', 'o', 'p',
|
'y', 'u', 'i', 'o', 'p',
|
||||||
'n', 'm', ',', '.', '/',
|
'n', 'm', ',', '.', '/',
|
||||||
@@ -34,6 +34,53 @@ 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 function layout()
|
||||||
|
local l, r, t, n = 0, 0, 0, 0
|
||||||
|
local opt = vis.win.options
|
||||||
|
if opt.numbers or opt.relativenumbers then
|
||||||
|
n = #tostring(vis.win.viewport.lines.finish)
|
||||||
|
end
|
||||||
|
if vis.ui.layout == vis.ui.layouts.HORIZONTAL then
|
||||||
|
for win in vis:windows() do
|
||||||
|
if win == vis.win then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
t = t + win.height
|
||||||
|
end
|
||||||
|
elseif vis.ui.layout == vis.ui.layouts.VERTICAL then
|
||||||
|
local left = true
|
||||||
|
for win in vis:windows() do
|
||||||
|
if win == vis.win then
|
||||||
|
left = false
|
||||||
|
if opt.wrapcolumn ~= 0 then
|
||||||
|
r = r + win.width - n - opt.wrapcolumn
|
||||||
|
end
|
||||||
|
elseif left then
|
||||||
|
l = l + win.width + 1
|
||||||
|
else
|
||||||
|
r = r + win.width
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return '--wrap --padding=' .. t .. ',' .. r .. ',0,' .. (l + n) .. ' --tabstop=' .. opt.tabwidth
|
||||||
|
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 jumps = {}
|
||||||
|
|
||||||
local function jump(keys)
|
local function jump(keys)
|
||||||
@@ -78,8 +125,13 @@ local function jump(keys)
|
|||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local nu = prev
|
||||||
|
local nd = #lst - next
|
||||||
local j = 1
|
local j = 1
|
||||||
for i = prev, 1, -1 do
|
for i = prev, 1, -1 do
|
||||||
|
if j == mu + 1 then
|
||||||
|
j = j + nd
|
||||||
|
end
|
||||||
if not up[j] then
|
if not up[j] then
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
@@ -89,6 +141,9 @@ local function jump(keys)
|
|||||||
end
|
end
|
||||||
j = 1
|
j = 1
|
||||||
for i = next, #lst do
|
for i = next, #lst do
|
||||||
|
if j == md + 1 then
|
||||||
|
j = j + nu
|
||||||
|
end
|
||||||
if not down[j] then
|
if not down[j] then
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
@@ -113,7 +168,7 @@ local function jump(keys)
|
|||||||
end
|
end
|
||||||
input = input .. data:sub(k)
|
input = input .. data:sub(k)
|
||||||
|
|
||||||
local code, out, err = vis:pipe(input, 'fzf --ansi --layout=reverse-list --no-info --no-separator --color gutter:-1 --marker="" --padding 0,0,0,3 --print-query --bind change:accept')
|
local code, out, err = vis:pipe(input, 'fzf --ansi --layout=reverse-list --no-info --no-separator --color gutter:-1,bg+:-1 --marker="" ' .. layout() .. ' --print-query --bind change:accept')
|
||||||
if code ~= 0 then
|
if code ~= 0 then
|
||||||
vis:info(err or ('fzf exit code ' .. code))
|
vis:info(err or ('fzf exit code ' .. code))
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user