From e23c9aa851dbbdc3a9e4f86c1c43dc4e7d56f926 Mon Sep 17 00:00:00 2001 From: wongxy Date: Tue, 12 Jul 2022 21:30:43 +0800 Subject: [PATCH] refactor: avoid unnecessary loops --- plugin/virtcolumn.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugin/virtcolumn.lua b/plugin/virtcolumn.lua index 87a65bc..be45502 100644 --- a/plugin/virtcolumn.lua +++ b/plugin/virtcolumn.lua @@ -57,6 +57,11 @@ local function _refresh() api.nvim_buf_clear_namespace(curbuf, NS, 0, -1) + local win_width = api.nvim_win_get_width(0) - curwin_col_off() + items = vim.tbl_filter(function(item) + return win_width > item + end, items) + if #items == 0 then return end @@ -69,14 +74,13 @@ local function _refresh() -- Avoid flickering caused by winscrolled_timer -- ↓↓↓↓↓↓↓↓↓↓↓ local lines = api.nvim_buf_get_lines(curbuf, offset, vim.fn.line "w$" + debounce, false) - local width = api.nvim_win_get_width(0) - curwin_col_off() local tabstop = vim.opt.tabstop:get() local char = vim.g.virtcolumn_char or "▕" for i = 1, #lines do for _, item in ipairs(items) do local line = lines[i]:gsub("\t", string.rep(" ", tabstop)) - if width > item and api.nvim_strwidth(line) < item then + if api.nvim_strwidth(line) < item then api.nvim_buf_set_extmark(curbuf, NS, i + offset - 1, 0, { virt_text = { { char, "VirtColumn" } }, virt_text_pos = "overlay",