Skip to content

Commit 0fb26db

Browse files
committed
ref: remove renderLine
1 parent d4c0de6 commit 0fb26db

File tree

2 files changed

+33
-20
lines changed

2 files changed

+33
-20
lines changed

lua/hlchunk/mods/indent/init.lua

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,24 +38,6 @@ end
3838
---@overload fun(conf?: UserIndentConf, meta?: MetaInfo): IndentMod
3939
local IndentMod = class(BaseMod, constructor)
4040

41-
function IndentMod:renderLine(bufnr, lnum, blankLen)
42-
local row_opts = {
43-
virt_text_pos = "overlay",
44-
hl_mode = "combine",
45-
priority = self.conf.priority,
46-
}
47-
local render_char_num, offset, shadow_char_num =
48-
indentHelper.calc(blankLen, self.meta.leftcol, self.meta.shiftwidth)
49-
50-
for i = 1, render_char_num do
51-
local char = self.conf.chars[(i - 1 + shadow_char_num) % #self.conf.chars + 1]
52-
local style = self.meta.hl_name_list[(i - 1 + shadow_char_num) % #self.meta.hl_name_list + 1]
53-
row_opts.virt_text = { { char, style } }
54-
row_opts.virt_text_win_col = offset + (i - 1) * self.meta.shiftwidth
55-
api.nvim_buf_set_extmark(bufnr, self.meta.ns_id, lnum, 0, row_opts)
56-
end
57-
end
58-
5941
function IndentMod:render(range)
6042
self:clear(range)
6143

@@ -75,6 +57,7 @@ function IndentMod:render(range)
7557
end
7658
end
7759

60+
-- calculate indent
7861
local retcode, rows_indent = indentHelper.get_rows_indent(Scope(range.bufnr, non_cached_start, non_cached_finish), {
7962
use_treesitter = self.conf.use_treesitter,
8063
virt_indent = true,
@@ -85,11 +68,41 @@ function IndentMod:render(range)
8568
end
8669
return
8770
end
71+
72+
-- update cache
8873
for lnum, indent in pairs(rows_indent) do
8974
self.meta.cache:set(range.bufnr, lnum, indent)
9075
end
76+
77+
-- calc render info
78+
local row_opts = {
79+
virt_text_pos = "overlay",
80+
hl_mode = "combine",
81+
priority = self.conf.priority,
82+
}
83+
local char_num = #self.conf.chars
84+
local style_num = #self.meta.hl_name_list
85+
local render_info = {}
9186
for lnum = range.start, range.finish do
92-
self:renderLine(range.bufnr, lnum, self.meta.cache:get(range.bufnr, lnum))
87+
local blankLen = self.meta.cache:get(range.bufnr, lnum)
88+
local render_char_num, offset, shadow_char_num =
89+
indentHelper.calc(blankLen, self.meta.leftcol, self.meta.shiftwidth)
90+
for i = 1, render_char_num do
91+
local char = self.conf.chars[(i - 1 + shadow_char_num) % char_num + 1]
92+
local style = self.meta.hl_name_list[(i - 1 + shadow_char_num) % style_num + 1]
93+
table.insert(render_info, {
94+
lnum = lnum,
95+
virt_text_win_col = offset + self.meta.leftcol + (i - 1) * self.meta.shiftwidth,
96+
virt_text = { { char, style } },
97+
})
98+
end
99+
end
100+
101+
-- render
102+
for _, v in pairs(render_info) do
103+
row_opts.virt_text = v.virt_text
104+
row_opts.virt_text_win_col = v.virt_text_win_col
105+
api.nvim_buf_set_extmark(range.bufnr, self.meta.ns_id, v.lnum, 0, row_opts)
93106
end
94107
end
95108

lua/hlchunk/utils/cache.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ local class = require("hlchunk.utils.class")
33
---@class Cache
44
---@field private cache table<number, table<string|number, any>>
55
---@overload fun():Cache
6-
local Cache = class(function (self)
6+
local Cache = class(function(self)
77
self.cache = {}
88
end)
99

0 commit comments

Comments
 (0)