From cfc337a5682bd5ac947c10db0b25886f7f6fdd3c Mon Sep 17 00:00:00 2001 From: dacctal Date: Mon, 27 Apr 2026 10:34:07 +0000 Subject: configurable! :) --- init.lua | 88 +++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 29 deletions(-) diff --git a/init.lua b/init.lua index d84bfaf..1170b98 100644 --- a/init.lua +++ b/init.lua @@ -8,10 +8,12 @@ require('vis') -MODAL_STYLE = 51 -MODAL_STYLE_INVERTED = 52 +local M = {} -VMODES = { +local MODAL_STYLE = 51 +local MODAL_STYLE_INVERTED = 52 + +local MODES_DEFAULT = { [vis.modes.NORMAL] = ' NORMAL ', [vis.modes.INSERT] = ' INSERT ', [vis.modes.VISUAL] = ' VISUAL ', @@ -20,10 +22,56 @@ VMODES = { [vis.modes.OPERATOR_PENDING] = ' OPERATOR_PENDING ', } +local MODES_ABRV = { + [vis.modes.NORMAL] = ' NOR ', + [vis.modes.INSERT] = ' INS ', + [vis.modes.VISUAL] = ' VIS ', + [vis.modes.REPLACE] = ' REP ', + [vis.modes.VISUAL_LINE] = ' V-L ', + [vis.modes.OPERATOR_PENDING] = ' O-P ', +} + +local MODES_TEMPLATES = { + MODES_DEFAULT, + MODEA_ABRV, +} +M.MODES_TEMPLATES = MODES_TEMPLATES + +local MODES = MODES_DEFAULT +M.MODES = MODES + +local STYLES = { + [vis.modes.NORMAL] = { + REGULAR = 'fore:default,back:yellow', + INVERTED = 'fore:yellow,back:black', + }, + [vis.modes.INSERT] = { + REGULAR = 'fore:default,back:green', + INVERTED = 'fore:green,back:black', + }, + [vis.modes.VISUAL] = { + REGULAR = 'fore:default,back:magenta', + INVERTED = 'fore:magenta,back:black', + }, + [vis.modes.REPLACE] = { + REGULAR = 'fore:default,back:blue', + INVERTED = 'fore:blue,back:black', + }, + [vis.modes.VISUAL_LINE] = { + REGULAR = 'fore:default,back:magenta', + INVERTED = 'fore:magenta,back:black', + }, + [vis.modes.OPERATOR_PENDING] = { + REGULAR = 'fore:default,back:blue', + INVERTED = 'fore:blue,back:black', + }, +} +M.STYLES = STYLES + vis.events.subscribe(vis.events.WIN_STATUS, function(win) local filename = ' [NO NAME] ' if win.file.name then filename = ' '..win.file.name..' ' end - local vmode = VMODES[vis.mode] + local vmode = MODES[vis.mode] local recording = '' if vis.recording then recording = ' @ RECORDING' @@ -40,34 +88,16 @@ vis.events.subscribe(vis.events.WIN_STATUS, function(win) win:status(status_left, status_right) - if vis.mode == vis.modes.INSERT then - win:style_define(MODAL_STYLE, - vis.lexers.STYLE_STATUS_FOCUSED..'fore:black,back:green') - win:style_define(MODAL_STYLE_INVERTED, 'fore:green,back:black') - elseif vis.mode == vis.modes.VISUAL - or vis.mode == vis.modes.VISUAL_LINE then - win:style_define(MODAL_STYLE, - vis.lexers.STYLE_STATUS_FOCUSED..'fore:black,back:magenta') - win:style_define(MODAL_STYLE_INVERTED, 'fore:magenta,back:black') - elseif vis.mode == vis.modes.OPERATOR_PENDING - or vis.mode == vis.modes.REPLACE then - win:style_define(MODAL_STYLE, - vis.lexers.STYLE_STATUS_FOCUSED..'fore:black,back:blue') - win:style_define(MODAL_STYLE_INVERTED, 'fore:blue,back:black') - elseif vis.mode == vis.modes.NORMAL then - win:style_define(MODAL_STYLE, - vis.lexers.STYLE_STATUS_FOCUSED..',back:yellow') - win:style_define(MODAL_STYLE_INVERTED, - vis.lexers.STYLE_STATUS_FOCUSED..',back:black,fore:yellow') - end + win:style_define(MODAL_STYLE, STYLES[vis.mode].REGULAR) + win:style_define(MODAL_STYLE_INVERTED, STYLES[vis.mode].INVERTED) - for i=0,string.len(vmode) do + for i=0,win.width do win:style_pos(MODAL_STYLE, i, win.height - 1) end - for i=string.len(vmode),string.len(vmode)+string.len(filename) do + for i=string.len(vmode),string.len(vmode)+string.len(filename)-1 do win:style_pos(MODAL_STYLE_INVERTED, i, win.height - 1) end - for i=string.len(vmode)+string.len(filename),win.width do - win:style_pos(MODAL_STYLE, i, win.height - 1) - end end) + + +return M -- cgit v1.2.3