Skip to content

Commit 8c67dbc

Browse files
refactor: only use start position for signs
1 parent 862b7df commit 8c67dbc

File tree

9 files changed

+47
-57
lines changed

9 files changed

+47
-57
lines changed

doc/render-markdown.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
*render-markdown.txt* For 0.10.0 Last change: 2024 August 27
1+
*render-markdown.txt* For 0.10.0 Last change: 2024 August 28
22

33
==============================================================================
44
Table of Contents *render-markdown-table-of-contents*

lua/render-markdown/health.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ local M = {}
55

66
---@private
77
---@type string
8-
M.version = '6.2.10'
8+
M.version = '6.2.11'
99

1010
function M.check()
1111
vim.health.start('render-markdown.nvim [version]')

lua/render-markdown/render/base.lua

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,14 @@ function Base:new(marks, config, context, info)
2626
end
2727

2828
---@protected
29-
---@param info render.md.NodeInfo
3029
---@param text? string
3130
---@param highlight string
32-
function Base:sign(info, text, highlight)
31+
function Base:sign(text, highlight)
3332
local sign = self.config.sign
3433
if not sign.enabled or text == nil then
3534
return
3635
end
37-
self.marks:add(false, info.start_row, info.start_col, {
38-
end_row = info.end_row,
39-
end_col = info.end_col,
36+
self.marks:add(false, self.info.start_row, self.info.start_col, {
4037
sign_text = text,
4138
sign_hl_group = colors.combine(highlight, sign.highlight),
4239
})

lua/render-markdown/render/code.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ function Render:language_hint(add_background)
9797
return false
9898
end
9999
if self.code.sign then
100-
self:sign(info, icon, icon_highlight)
100+
self:sign(icon, icon_highlight)
101101
end
102102
local highlight = { icon_highlight }
103103
if add_background then

lua/render-markdown/render/heading.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ end
5353
function Render:render()
5454
local icon_width = self:start_icon()
5555
if self.heading.sign then
56-
self:sign(self.info, self.data.sign, self.data.foreground)
56+
self:sign(self.data.sign, self.data.foreground)
5757
end
5858

5959
self.marks:add(true, self.info.start_row, 0, {

tests/callout_spec.lua

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ describe('callout.md', function()
4444
callout(row:get(), 2, 8, '󰌶 Tip', ok),
4545
util.quote(row:increment(), '%s', ok),
4646
util.quote(row:increment(), '%s ', ok),
47-
util.code_row(row:get(), 2),
4847
util.code_language(row:get(), 2, 'lua'),
4948
util.quote(row:increment(), '%s ', ok),
5049
util.code_row(row:get(), 2),

tests/code_spec.lua

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,6 @@
22

33
local util = require('tests.util')
44

5-
---@param row integer
6-
---@param col integer
7-
---@param win_col integer
8-
---@return render.md.MarkInfo
9-
local function hide_background(row, col, win_col)
10-
---@type render.md.MarkInfo
11-
return {
12-
row = { row },
13-
col = { col },
14-
virt_text = { { string.rep(' ', vim.opt.columns:get() * 2), 'Normal' } },
15-
virt_text_pos = 'win_col',
16-
virt_text_win_col = win_col,
17-
}
18-
end
19-
205
---@param row integer
216
---@param col integer
227
---@param offset integer
@@ -47,19 +32,15 @@ describe('code.md', function()
4732

4833
vim.list_extend(expected, util.heading(row:get(), 1))
4934

50-
vim.list_extend(expected, {
51-
util.code_row(row:increment(2), 0),
52-
util.code_language(row:get(), 0, 'rust'),
53-
})
35+
table.insert(expected, util.code_language(row:increment(2), 0, 'rust'))
5436
for _ = 1, 3 do
5537
table.insert(expected, util.code_row(row:increment(), 0))
5638
end
5739
table.insert(expected, util.code_below(row:increment(), 0))
5840

5941
vim.list_extend(expected, {
6042
util.bullet(row:increment(2), 0, 1),
61-
util.code_row(row:increment(2), 2),
62-
util.code_language(row:get(), 2, 'lua'),
43+
util.code_language(row:increment(2), 2, 'lua'),
6344
})
6445
for _ = 1, 2 do
6546
table.insert(expected, util.code_row(row:increment(), 2))
@@ -68,8 +49,7 @@ describe('code.md', function()
6849

6950
vim.list_extend(expected, {
7051
util.bullet(row:increment(2), 0, 1),
71-
util.code_row(row:increment(2), 2),
72-
util.code_language(row:get(), 2, 'lua'),
52+
util.code_language(row:increment(2), 2, 'lua'),
7353
})
7454
for _, col in ipairs({ 2, 0, 2 }) do
7555
table.insert(expected, util.code_row(row:increment(), col))
@@ -92,46 +72,38 @@ describe('code.md', function()
9272

9373
vim.list_extend(expected, util.heading(row:get(), 1))
9474

95-
vim.list_extend(expected, {
96-
util.code_row(row:increment(2), 0),
97-
hide_background(row:get(), 0, 34),
98-
util.code_language(row:get(), 0, 'rust'),
99-
})
75+
table.insert(expected, util.code_language(row:increment(2), 0, 'rust', 34))
10076
for _ = 1, 3 do
10177
vim.list_extend(expected, {
10278
util.code_row(row:increment(), 0),
10379
padding(row:get(), 0, 0, 2),
104-
hide_background(row:get(), 0, 34),
80+
util.code_hide(row:get(), 0, 34),
10581
})
10682
end
10783
table.insert(expected, util.code_below(row:increment(), 0, 34))
10884

10985
vim.list_extend(expected, {
11086
util.bullet(row:increment(2), 0, 1),
111-
util.code_row(row:increment(2), 2),
112-
hide_background(row:get(), 2, 20),
113-
util.code_language(row:get(), 2, 'lua'),
87+
util.code_language(row:increment(2), 2, 'lua', 20),
11488
})
11589
for _ = 1, 2 do
11690
vim.list_extend(expected, {
11791
util.code_row(row:increment(), 2),
11892
padding(row:get(), 2, 0, 2),
119-
hide_background(row:get(), 2, 20),
93+
util.code_hide(row:get(), 2, 20),
12094
})
12195
end
12296
table.insert(expected, util.code_below(row:increment(), 2, 20))
12397

12498
vim.list_extend(expected, {
12599
util.bullet(row:increment(2), 0, 1),
126-
util.code_row(row:increment(2), 2),
127-
hide_background(row:get(), 2, 20),
128-
util.code_language(row:get(), 2, 'lua'),
100+
util.code_language(row:increment(2), 2, 'lua', 20),
129101
})
130102
for _, col in ipairs({ 2, 0, 2 }) do
131103
vim.list_extend(expected, {
132104
util.code_row(row:increment(), col),
133105
padding(row:get(), col, 2 - col, 2),
134-
hide_background(row:get(), col, 20),
106+
util.code_hide(row:get(), col, 20),
135107
})
136108
end
137109
table.insert(expected, util.code_below(row:increment(), 2, 20))

tests/heading_code_spec.lua

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ describe('heading_code.md', function()
1818

1919
table.insert(expected, util.link(row:increment(2), 0, 21, 'image'))
2020

21-
vim.list_extend(expected, {
22-
util.code_row(row:increment(2), 0),
23-
util.code_language(row:get(), 0, 'python'),
24-
})
21+
table.insert(expected, util.code_language(row:increment(2), 0, 'python'))
2522
for _ = 13, 21 do
2623
table.insert(expected, util.code_row(row:increment(), 0))
2724
end

tests/util.lua

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ function M.heading(row, level)
6666
local background = M.hl(string.format('H%dBg', level))
6767
---@type render.md.MarkInfo
6868
local sign_mark = {
69-
row = { row, row },
70-
col = { 0, level },
69+
row = { row },
70+
col = { 0 },
7171
sign_text = '󰫎 ',
7272
sign_hl_group = M.hl('_' .. foreground .. '_' .. M.hl('Sign')),
7373
}
@@ -136,11 +136,27 @@ function M.code_row(row, col)
136136
}
137137
end
138138

139+
---@param row integer
140+
---@param col integer
141+
---@param win_col integer
142+
---@return render.md.MarkInfo
143+
function M.code_hide(row, col, win_col)
144+
---@type render.md.MarkInfo
145+
return {
146+
row = { row },
147+
col = { col },
148+
virt_text = { { string.rep(' ', vim.opt.columns:get() * 2), 'Normal' } },
149+
virt_text_pos = 'win_col',
150+
virt_text_win_col = win_col,
151+
}
152+
end
153+
139154
---@param row integer
140155
---@param col integer
141156
---@param name 'python'|'lua'|'rust'
157+
---@param win_col? integer
142158
---@return render.md.MarkInfo[]
143-
function M.code_language(row, col, name)
159+
function M.code_language(row, col, name, win_col)
144160
local icon, highlight
145161
if name == 'python' then
146162
icon, highlight = '󰌠 ', 'MiniIconsYellow'
@@ -149,21 +165,30 @@ function M.code_language(row, col, name)
149165
elseif name == 'rust' then
150166
icon, highlight = '󱘗 ', 'MiniIconsOrange'
151167
end
168+
169+
local result = {}
170+
152171
---@type render.md.MarkInfo
153172
local sign_mark = {
154-
row = { row, row },
155-
col = { col + 3, col + 3 + #name },
173+
row = { row },
174+
col = { col },
156175
sign_text = icon,
157176
sign_hl_group = M.hl('_' .. highlight .. '_' .. M.hl('Sign')),
158177
}
178+
table.insert(result, sign_mark)
179+
180+
if win_col ~= nil then
181+
table.insert(result, M.code_hide(row, col, win_col))
182+
end
183+
159184
---@type render.md.MarkInfo
160185
local language_mark = {
161186
row = { row },
162187
col = { col + 3 },
163188
virt_text = { { icon .. name, { highlight, M.hl('Code') } } },
164189
virt_text_pos = 'inline',
165190
}
166-
return { sign_mark, language_mark }
191+
return vim.list_extend(result, { M.code_row(row, col), language_mark })
167192
end
168193

169194
---@param row integer

0 commit comments

Comments
 (0)