From da6bd6c874fadb526bc8c365427c2dcc37988fcd Mon Sep 17 00:00:00 2001 From: dacctal Date: Mon, 27 Apr 2026 07:57:06 +0000 Subject: beautiful code & recording detection --- init.lua | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/init.lua b/init.lua index db76e55..ef2558d 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,10 @@ ---[[ modal - the status line colorizer for vis ]] +--[[ + + modal + the status line colorizer for vis + soon-to-be configurable :) + +]] require('vis') @@ -16,22 +22,43 @@ VMODES = { vis.events.subscribe(vis.events.WIN_STATUS, function(win) local filename = ' [NO NAME] ' - if win.file.name then filename = ' '..win.file.name..' ' end + if win.file.name then filename = ' '..win.file.name..' ' end local vmode = VMODES[vis.mode] - win:status(vmode..filename) + local recording = '' + if vis.recording then + recording = ' @ RECORDING' + end + status_left = vmode..filename..recording + + cursors = 0 + for _ in win:selections_iterator() do cursors = cursors+1 end + selection_size = "SELECTION_SIZE: ".. + win.selection.range.finish-win.selection.range.start + cursor_amount = "CURSORS: "..cursors + cursor_pos = win.selection.line..":"..win.selection.col + status_right = selection_size.." | "..cursor_amount.." @ "..cursor_pos + + 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, + 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') + 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') + 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') + 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 for i=0,string.len(vmode) do -- cgit v1.2.3