|
54 | 54 | function IndentMod:narrowRange(range) |
55 | 55 | local start = range.start |
56 | 56 | local finish = range.finish |
57 | | - for i = range.start, range.finish do |
| 57 | + for i = start, finish do |
58 | 58 | if not self.meta.cache:has(range.bufnr, i) then |
59 | 59 | start = i |
60 | 60 | break |
61 | 61 | end |
62 | 62 | end |
63 | | - for i = range.finish, range.start, -1 do |
| 63 | + for i = finish, start, -1 do |
64 | 64 | if not self.meta.cache:has(range.bufnr, i) then |
65 | 65 | finish = i |
66 | 66 | break |
|
71 | 71 |
|
72 | 72 | function IndentMod:calcRenderInfo(range) |
73 | 73 | -- calc render info |
74 | | - local char_num = #self.conf.chars |
75 | | - local style_num = #self.meta.hl_name_list |
76 | | - local leftcol = self.meta.leftcol |
77 | | - local sw = self.meta.shiftwidth |
| 74 | + local conf = self.conf |
| 75 | + local meta = self.meta |
| 76 | + local char_num = #conf.chars |
| 77 | + local style_num = #meta.hl_name_list |
| 78 | + local leftcol = meta.leftcol |
| 79 | + local sw = meta.shiftwidth |
78 | 80 | local render_info = {} |
79 | 81 | for lnum = range.start, range.finish do |
80 | | - local blankLen = self.meta.cache:get(range.bufnr, lnum) --[[@as string]] |
| 82 | + local blankLen = meta.cache:get(range.bufnr, lnum) --[[@as string]] |
81 | 83 | local render_char_num, offset, shadow_char_num = indentHelper.calc(blankLen, leftcol, sw) |
82 | 84 | for i = 1, render_char_num do |
83 | 85 | local win_col = offset + (i - 1) * sw |
84 | | - local char = self.conf.chars[(i - 1 + shadow_char_num) % char_num + 1] |
85 | | - local style = self.meta.hl_name_list[(i - 1 + shadow_char_num) % style_num + 1] |
| 86 | + local char = conf.chars[(i - 1 + shadow_char_num) % char_num + 1] |
| 87 | + local style = meta.hl_name_list[(i - 1 + shadow_char_num) % style_num + 1] |
86 | 88 | table.insert(render_info, { |
87 | 89 | lnum = lnum, |
88 | 90 | virt_text_win_col = win_col, |
@@ -114,32 +116,34 @@ end |
114 | 116 |
|
115 | 117 | function IndentMod:render(range, opts) |
116 | 118 | opts = opts or { lazy = false } |
| 119 | + local bufnr = range.bufnr |
| 120 | + local conf = self.conf |
| 121 | + local meta = self.meta |
| 122 | + |
117 | 123 | if not opts.lazy then |
118 | | - self:clear(Scope(range.bufnr, 0, api.nvim_buf_line_count(range.bufnr))) |
119 | | - self.meta.cache:clear(range.bufnr) |
120 | | - pos2id:clear(range.bufnr) |
121 | | - pos2info:clear(range.bufnr) |
| 124 | + self:clear(Scope(bufnr, 0, api.nvim_buf_line_count(bufnr))) |
| 125 | + meta.cache:clear(bufnr) |
| 126 | + pos2id:clear(bufnr) |
| 127 | + pos2info:clear(bufnr) |
122 | 128 | end |
123 | 129 |
|
124 | 130 | local narrowed_range = self:narrowRange(range) |
125 | | - -- calculate indent |
126 | 131 | local retcode, rows_indent = indentHelper.get_rows_indent(narrowed_range, { |
127 | | - use_treesitter = self.conf.use_treesitter, |
| 132 | + use_treesitter = conf.use_treesitter, |
128 | 133 | virt_indent = true, |
129 | 134 | }) |
130 | | - if retcode == ROWS_INDENT_RETCODE.NO_TS and self.conf.use_treesitter then |
131 | | - if self.conf.notify then |
| 135 | + if retcode == ROWS_INDENT_RETCODE.NO_TS and conf.use_treesitter then |
| 136 | + if conf.notify then |
132 | 137 | self:notify("[hlchunk.indent]: no parser for " .. vim.bo.filetype, nil, { once = true }) |
133 | 138 | end |
134 | 139 | return |
135 | 140 | end |
136 | 141 |
|
137 | | - -- update cache |
138 | 142 | for lnum, indent in pairs(rows_indent) do |
139 | | - self.meta.cache:set(range.bufnr, lnum, indent) |
| 143 | + meta.cache:set(bufnr, lnum, indent) |
140 | 144 | end |
141 | 145 | local render_info = self:calcRenderInfo(narrowed_range) |
142 | | - self:setmark(range.bufnr, render_info) |
| 146 | + self:setmark(bufnr, render_info) |
143 | 147 | end |
144 | 148 |
|
145 | 149 | function IndentMod:createAutocmd() |
|
0 commit comments