Skip to content

Commit 044f2d6

Browse files
fix: account for indent with block widths
## Details Block widths work by hiding most of the right side of a screen. When this gets combined with the indentation feature text gets cut off equal to the amount of the indent. To fix this account for the indent when computing the bounds.
1 parent 4bf3247 commit 044f2d6

File tree

5 files changed

+22
-9
lines changed

5 files changed

+22
-9
lines changed

Diff for: lua/render-markdown/health.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ local M = {}
55

66
---@private
77
---@type string
8-
M.version = '7.0.0'
8+
M.version = '7.0.1'
99

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

Diff for: lua/render-markdown/render/base.lua

+14-5
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,20 @@ end
4444
---@param level? integer
4545
---@return { [1]: string, [2]: string }[]
4646
function Base:indent_virt_line(line, level)
47+
local amount = self:indent(level)
48+
if amount > 0 then
49+
table.insert(line, 1, { str.spaces(amount), 'Normal' })
50+
end
51+
return line
52+
end
53+
54+
---@protected
55+
---@param level? integer
56+
---@return integer
57+
function Base:indent(level)
4758
local indent = self.config.indent
4859
if not indent.enabled then
49-
return line
60+
return 0
5061
end
5162
if level == nil then
5263
level = self.info:heading_level(true)
@@ -56,11 +67,9 @@ function Base:indent_virt_line(line, level)
5667
end
5768
level = level - indent.skip_level
5869
if level <= 0 then
59-
return line
70+
return 0
6071
end
61-
local indent_line = { str.spaces(indent.per_level * level), 'Normal' }
62-
table.insert(line, 1, indent_line)
63-
return line
72+
return indent.per_level * level
6473
end
6574

6675
return Base

Diff for: lua/render-markdown/render/code.lua

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ local str = require('render-markdown.core.str')
1212
---@field language? string
1313
---@field max_width integer
1414
---@field empty_rows integer[]
15+
---@field indent integer
1516

1617
---@class render.md.render.Code: render.md.Renderer
1718
---@field private code render.md.Code
@@ -62,6 +63,7 @@ function Render:setup()
6263
language = (language_info or {}).text,
6364
max_width = math.max(max_width, self.code.min_width),
6465
empty_rows = empty_rows,
66+
indent = self:indent(),
6567
}
6668

6769
return true
@@ -119,7 +121,7 @@ function Render:language(add_background)
119121
local icon_text = icon .. ' ' .. info.text
120122
local win_col = self.data.max_width - self.code.language_pad
121123
if self.code.width == 'block' then
122-
win_col = win_col - str.width(icon_text)
124+
win_col = win_col - str.width(icon_text) + self.data.indent
123125
end
124126
return self.marks:add(true, info.start_row, 0, {
125127
virt_text = { { icon_text, highlight } },
@@ -165,7 +167,7 @@ function Render:background(icon_added)
165167
self.marks:add(false, row, self.data.col, {
166168
priority = 0,
167169
virt_text = { { padding, 'Normal' } },
168-
virt_text_win_col = width,
170+
virt_text_win_col = width + self.data.indent,
169171
})
170172
end
171173
end

Diff for: lua/render-markdown/render/heading.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ end
141141
---@private
142142
---@param width integer
143143
function Render:background(width)
144+
local win_col = width + self:indent(self.data.level)
144145
for row = self.info.start_row, self.data.end_row - 1 do
145146
self.marks:add(true, row, 0, {
146147
end_row = row + 1,
@@ -152,7 +153,7 @@ function Render:background(width)
152153
self.marks:add(true, row, 0, {
153154
priority = 0,
154155
virt_text = { { str.spaces(vim.o.columns * 2), 'Normal' } },
155-
virt_text_win_col = width,
156+
virt_text_win_col = win_col,
156157
})
157158
end
158159
end

Diff for: tests/util.lua

+1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ local M = {}
129129
---@param file string
130130
---@param opts? render.md.UserConfig
131131
function M.setup(file, opts)
132+
require('luassert.assert'):set_parameter('TableErrorHighlightColor', 'none')
132133
require('render-markdown').setup(opts)
133134
vim.cmd('e ' .. file)
134135
vim.wait(0)

0 commit comments

Comments
 (0)