Compare commits

..

5 Commits

5 changed files with 64 additions and 22 deletions

View File

@@ -263,6 +263,7 @@ fi
exec fzf --query "$3" \
--prompt "$prompt" \
--header-label "$label" \
--multi \
--ansi \
--delimiter : \
--ghost ' (Use alt-? for help)' \

View File

@@ -9,7 +9,7 @@ local lex = lexer.new(..., {inherit = lexer.load('go')})
local open_brace = lex:tag(lexer.OPERATOR, P('{'))
local close_brace = lex:tag(lexer.OPERATOR, P('}'))
local backtick = lex:tag(lexer.STRING, P('`'))
local backtick = lex:tag(lexer.CODE, P('`'))
local ws = lex:get_rule('whitespace')
local tpl = lexer.new("template")

View File

@@ -1,6 +1,6 @@
-- Eight-color scheme
local lexers = vis.lexers
lexers.STYLE_DEFAULT ='back:#dae4f1,fore:#1f212e'
lexers.STYLE_DEFAULT ='back:#f2f2f3,#e0e5eb,fore:#1f212e'
lexers.STYLE_NOTHING = ''
lexers.STYLE_ATTRIBUTE = 'fore:#a1a3aa,bold'
lexers.STYLE_CLASS = 'fore:yellow,bold'
@@ -21,7 +21,7 @@ lexers.STYLE_TAG = 'fore:#705943,bold'
lexers.STYLE_TYPE = 'fore:#7461d1,bold'
lexers.STYLE_VARIABLE = 'fore:#8c5eba,bold'
lexers.STYLE_WHITESPACE = ''
lexers.STYLE_EMBEDDED = 'back:#2d3353,bold'
lexers.STYLE_EMBEDDED = 'back:#e0e5eb,bold'
lexers.STYLE_IDENTIFIER = ''
lexers.STYLE_LINENUMBER = ''

View File

@@ -49,10 +49,16 @@ local function nil_or_tonumber(s)
end
local function open_file_pos(line, open_cmd)
local iter = string.gmatch(line, '[^:]+')
local iter = line:gmatch('[^:]+')
local file = iter()
local line_num = nil_or_tonumber(iter())
local ln = iter()
local col = nil_or_tonumber(iter()) or 1
local i = ln and ln:find(' ')
if i then
ln = ln:sub(0, i)
col = 1
end
local line_num = nil_or_tonumber(ln)
if open_cmd ~= 'e' or vis.win.file ~= file then
open_file(file, open_cmd)
end
@@ -61,10 +67,13 @@ local function open_file_pos(line, open_cmd)
end
end
local function open_file_current_line(open_cmd)
local function open_file_current_line(open_cmd, keys)
local line = vis.win.file.lines[vis.win.selection.line]
vis:info(line)
open_file_pos(line)
if keys then
vis:feedkeys(keys)
end
open_file_pos(line, open_cmd)
end
local function escape_and_quoted(s)
@@ -84,23 +93,33 @@ end
local function fzf_sh(arg)
action = function(out)
open_file_pos(out, vis.win.file.modified and 'o' or 'e')
if (out:find('\n') or #out) == #out then
open_file_pos(out, vis.win.file.modified and 'o' or 'e')
else
vis:message(out)
end
end
local home = os.getenv('HOME')
local path = vis.win.file.path or ''
local dir = path:match('^.*/') or ''
local reg = ''
if reg ~= '"' then
if vis.register ~= '"' then
reg = string.gsub(vis.registers[vis.register][1], '%z', '')
end
local cmd = home .. '/.config/vis/fzf.sh ' .. escape_and_quoted(arg) .. ' ' .. escape_and_quoted(dir) .. ' ' .. escape_and_quoted(reg)
local cmd = home ..
'/.config/vis/fzf.sh ' ..
escape_and_quoted(arg) .. ' ' .. escape_and_quoted(dir) .. ' ' .. escape_and_quoted(reg)
cmd_action(cmd, action)
end
local function search(cmd, action)
if action == nil then
action = function(out)
open_file_pos(out, 'e')
if (out:find('\n') or #s) == #s then
open_file_pos(out, 'e')
else
vis:message(out)
end
end
end
if cmd:match('^fzf ') and vis.register ~= '"' then
@@ -187,17 +206,27 @@ local ripgrep = 'rg --column --line-number --color=always --smart-case'
local function close_prev_win()
vis:feedkeys('<vis-window-prev>')
if not vis.win:close() then
vis:feedkeys('<vis-window-next>')
vis:info('No write since last change')
if vis.win == win then
vis:info('Last window')
elseif not vis.win:close() then
if vis.win.file.modified then
vis:info('No write since last change')
else
vis:command('q')
end
end
end
local function close_next_win()
vis:feedkeys('<vis-window-next>')
if not vis.win:close() then
vis:feedkeys('<vis-window-prev>')
vis:info('No write since last change')
if vis.win == win then
vis:info('Last window')
elseif not vis.win:close() then
if vis.win.file.modified then
vis:info('No write since last change')
else
vis:command('q')
end
end
end
@@ -266,11 +295,23 @@ vis.events.subscribe(vis.events.INIT, function()
vis:command('fzfmru')
end, 'fzf recent')
vis:map(vis.modes.NORMAL, 'gf', function()
open_file_current_line('o')
end, 'open file from current line (with line and col')
vis:map(vis.modes.NORMAL, ' w', function()
open_file_current_line('e')
end, 'open file from current line in current window (with optional line and col)')
vis:map(vis.modes.NORMAL, ' cd', function()
vis:map(vis.modes.NORMAL, ' o', function()
open_file_current_line('o')
end, 'open file from current line in new window (with optional line and col)')
vis:map(vis.modes.NORMAL, ' k', function()
open_file_current_line('e', '<vis-window-prev>')
end, 'open file from current line in above window (with optional line and col)')
vis:map(vis.modes.NORMAL, ' j', function()
open_file_current_line('e', '<vis-window-next>')
end, 'open file from current line in below window (with optional line and col)')
vis:map(vis.modes.NORMAL, ' c', function()
search('zoxide query -l | fzf', function(path)
vis:command('cd ' .. path)
end)

View File

@@ -80,7 +80,7 @@ st.color13: #8f248f
st.color14: #509595
st.color15: #dbdff0
#else
st.background: #dae4f1
st.background: #f2f2f3
st.foreground: #1f212e
st.cursorColor: #bf8040
st.reverse-cursor: #1f212e