From 3112f23fd224d8ba9a09ed18756fd5cff8519946 Mon Sep 17 00:00:00 2001 From: Randy Palamar Date: Mon, 24 Jul 2023 22:16:26 -0600 Subject: implement the more useful normal mode highlighting This makes use of vis's recursive mappings to call the highlighted-yank action after some logic to figure out if a complete selection was made. There isn't a good way of determing the end of the selection after entering OPERATOR_PENDING mode so we have to check after each keypress to determine if it can terminate a selection. Some keys might be missing but all the main ones should be there. --- init.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/init.lua b/init.lua index 142a5c8..fb9a80c 100644 --- a/init.lua +++ b/init.lua @@ -13,10 +13,25 @@ vis.events.subscribe(vis.events.INIT, function() while os.clock() - tstamp < M.duration do end vis.win:style_define(vis.win.STYLE_SELECTION, vis.lexers.STYLE_SELECTION) vis:redraw() + vis:feedkeys("") end, "Yank operator with highlighting") vis:map(vis.modes.OPERATOR_PENDING, "y", yank) vis:map(vis.modes.VISUAL, "y", yank) vis:map(vis.modes.VISUAL_LINE, "y", yank) + + vis:map(vis.modes.NORMAL, "y", function(keys) + local sel_end_chrs = "$%^{}()wp" + if #keys < 1 or sel_end_chrs:find(keys:sub(-1), 1, true) == nil then + if keys:find("") then + return #keys + end + return -1 + end + vis:feedkeys("") + vis:feedkeys(keys) + vis:feedkeys("y") + return #keys + end) end) return M -- cgit