Update vis config
parent
a59a6fdfd6
commit
ef942c9549
|
@ -6,8 +6,6 @@ local P, S, B = lpeg.P, lpeg.S, lpeg.B
|
|||
|
||||
local lex = lexer.new(..., {no_user_word_lists = true})
|
||||
|
||||
local md = '.markdown'
|
||||
|
||||
local ws = lex:get_rule('whitespace')
|
||||
local nl = P('\n')
|
||||
local bl = nl * nl
|
||||
|
@ -111,8 +109,8 @@ lex:embed(html, html_start_rule, html_end_rule)
|
|||
local yaml = lexer.load('yaml')
|
||||
local doc_bounds_rule = yaml:get_rule('doc_bounds')
|
||||
local hr_rule = lex:get_rule('hr')
|
||||
local yaml_start_rule = doc_bounds_rule - hr_rule
|
||||
local yaml_end_rule = doc_bounds_rule - hr_rule
|
||||
local yaml_start_rule = doc_bounds_rule * nl - hr_rule
|
||||
local yaml_end_rule = doc_bounds_rule * nl - hr_rule
|
||||
lex:embed(yaml, yaml_start_rule, yaml_end_rule)
|
||||
|
||||
return lex
|
||||
|
|
|
@ -42,7 +42,7 @@ lexers.STYLE_CURSOR_LINE = 'underlined'
|
|||
lexers.STYLE_COLOR_COLUMN = 'fore:black,back:blue'
|
||||
lexers.STYLE_SELECTION = 'fore:black,back:white'
|
||||
lexers.STYLE_STATUS = 'fore:blue'
|
||||
lexers.STYLE_STATUS_FOCUSED = 'fore:blue'
|
||||
lexers.STYLE_STATUS_FOCUSED = 'fore:magenta'
|
||||
lexers.STYLE_SEPARATOR = 'fore:blue'
|
||||
lexers.STYLE_INFO = 'fore:red'
|
||||
lexers.STYLE_EOF = 'fore:blue'
|
||||
|
|
|
@ -16,9 +16,6 @@ local e = vis.events
|
|||
e.subscribe(e.INIT, function()
|
||||
-- load theme
|
||||
require("themes/basic")
|
||||
local lexers = vis.lexers
|
||||
lexers.lexers = {}
|
||||
if lexers.load and not lexers.property then lexers.load("text") end
|
||||
|
||||
-- mappings
|
||||
vis:map(m.NORMAL, 'y', '<vis-register>+<vis-operator-yank>')
|
||||
|
@ -34,21 +31,46 @@ e.subscribe(e.INIT, function()
|
|||
vis:map(m.VISUAL, 'P', '<vis-register>+<vis-put-before>')
|
||||
vis:map(m.VISUAL_LINE, 'P', '<vis-register>+<vis-put-before>')
|
||||
|
||||
vis:map(m.NORMAL, 'f', '<vis-motion-to-right>')
|
||||
vis:map(m.OPERATOR_PENDING, 'f', '<vis-motion-to-right>')
|
||||
vis:map(m.VISUAL, 'f', '<vis-motion-to-right>')
|
||||
vis:map(m.NORMAL, 'F', '<vis-motion-to-left>')
|
||||
vis:map(m.OPERATOR_PENDING, 'F', '<vis-motion-to-left>')
|
||||
vis:map(m.VISUAL, 'F', '<vis-motion-to-left>')
|
||||
vis:map(m.NORMAL, 't', '<vis-motion-till-right>')
|
||||
vis:map(m.OPERATOR_PENDING, 't', '<vis-motion-till-right>')
|
||||
vis:map(m.VISUAL, 't', '<vis-motion-till-right>')
|
||||
vis:map(m.NORMAL, 'T', '<vis-motion-till-left>')
|
||||
vis:map(m.OPERATOR_PENDING, 'T', '<vis-motion-till-left>')
|
||||
vis:map(m.VISUAL, 'T', '<vis-motion-till-left>')
|
||||
|
||||
vis:map(m.NORMAL, '?', '<vis-selections-save><vis-search-backward>')
|
||||
vis:map(m.NORMAL, '/', '<vis-selections-save><vis-search-forward>')
|
||||
|
||||
vis:map(m.NORMAL, ' w', function() vis:command('w') end)
|
||||
vis:map(m.NORMAL, ' W', function() vis:command('w!') end)
|
||||
vis:map(m.NORMAL, ' q', function() vis:command('q') end)
|
||||
vis:map(m.NORMAL, ' Q', function() vis:command('q!') end)
|
||||
|
||||
vis:map(m.NORMAL, ' e', function()
|
||||
local s, f = vis:pipe('find -type f | vis-menu -l 5 -p "Edit file"')
|
||||
if s ~= 0 or not f then return end
|
||||
if s ~= 0 or f == nil then return end
|
||||
cmd = ('e "%s"'):format(f:sub(1, -2))
|
||||
vis:info(cmd)
|
||||
vis:command(cmd)
|
||||
end, 'Edit file')
|
||||
|
||||
vis:map(m.NORMAL, ' o', function()
|
||||
local s, f = vis:pipe('find -type f | vis-menu -l 5 -p "Open file"')
|
||||
if s ~= 0 or f == nil then return end
|
||||
cmd = ('o "%s"'):format(f:sub(1, -2))
|
||||
vis:info(cmd)
|
||||
vis:command(cmd)
|
||||
end, 'Open file')
|
||||
|
||||
vis:map(m.NORMAL, ' cd', function()
|
||||
local s, f = vis:pipe('find -type d | vis-menu -l 5 -p "Change directory"')
|
||||
if s ~= 0 or not f then return end
|
||||
if s ~= 0 or f == nil then return end
|
||||
cmd = ('cd "%s"'):format(f:sub(1, -2))
|
||||
vis:info(cmd)
|
||||
vis:command(cmd)
|
||||
|
@ -125,22 +147,78 @@ end)
|
|||
|
||||
-- set title
|
||||
local modified = false
|
||||
local function set_title(title)
|
||||
os.execute('printf "\\e];'..title..(modified and '[+]' or '')..'\\e"')
|
||||
local function set_title(name)
|
||||
os.execute(('printf "\\e];%s%s\\e"'):format(name, modified and '[+]' or ''))
|
||||
end
|
||||
|
||||
e.subscribe(e.WIN_OPEN, function(win)
|
||||
set_title(win.file.name or '[No Name]')
|
||||
end)
|
||||
|
||||
e.subscribe(e.FILE_SAVE_POST, function(file)
|
||||
modified = false
|
||||
set_title(file.name)
|
||||
end)
|
||||
|
||||
e.subscribe(e.WIN_STATUS, function(win)
|
||||
if not modified and win.file.modified then
|
||||
modified = true
|
||||
if os.getenv('TERM') ~= 'linux' then
|
||||
e.subscribe(e.WIN_OPEN, function(win)
|
||||
set_title(win.file.name or '[No Name]')
|
||||
end)
|
||||
|
||||
e.subscribe(e.FILE_SAVE_POST, function(file)
|
||||
modified = false
|
||||
set_title(file.name)
|
||||
end)
|
||||
|
||||
e.subscribe(e.WIN_STATUS, function(win)
|
||||
if not modified and win.file.modified then
|
||||
modified = true
|
||||
set_title(win.file.name or '[No Name]')
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- cursor position
|
||||
local cursors_path = os.getenv('XDG_CACHE_HOME')..'/vis-cursors'
|
||||
local cursors = {}
|
||||
local files = {}
|
||||
|
||||
local function get_cursors()
|
||||
local f = io.open(cursors_path)
|
||||
if f == nil then return end
|
||||
files = {}
|
||||
for l in f:lines() do
|
||||
local path, pos = l:match('(.+):(%d+)')
|
||||
cursors[path] = pos
|
||||
table.insert(files, path)
|
||||
end
|
||||
f:close()
|
||||
end
|
||||
|
||||
e.subscribe(e.INIT, get_cursors)
|
||||
|
||||
e.subscribe(e.WIN_OPEN, function(win)
|
||||
if win.file == nil or win.file.path == nil then return end
|
||||
local pos = cursors[win.file.path]
|
||||
if pos == nil then
|
||||
cursors[win.file.path] = win.selection.pos
|
||||
return
|
||||
end
|
||||
win.selection.pos = tonumber(pos)
|
||||
vis:feedkeys('zz')
|
||||
end)
|
||||
|
||||
e.subscribe(e.WIN_CLOSE, function(win)
|
||||
if win.file == nil or win.file.path == nil then return end
|
||||
get_cursors()
|
||||
for i, path in ipairs(files) do
|
||||
if path == win.file.path then table.remove(files, i) end
|
||||
end
|
||||
if win.selection.pos == 0 then return end
|
||||
table.insert(files, 1, win.file.path)
|
||||
cursors[win.file.path] = win.selection.pos
|
||||
end)
|
||||
|
||||
e.subscribe(e.QUIT, function()
|
||||
local f = io.open(cursors_path, 'w+')
|
||||
if f == nil then return end
|
||||
local buf = {}
|
||||
for i, path in ipairs(files) do
|
||||
table.insert(buf, ('%s:%d'):format(path, cursors[path]))
|
||||
if i > 100 then break end -- remember only 100
|
||||
end
|
||||
local out = table.concat(buf, '\n')
|
||||
f:write(out)
|
||||
f:close()
|
||||
end)
|
||||
|
|
Loading…
Reference in New Issue