Skip to content

Commit

Permalink
fix: Visual text concealing is now done via string.rep() instead of…
Browse files Browse the repository at this point in the history
… `string.gsub()`

Fixes bugs caused by `:gsub()` breaking UTF-8 characters. Use
`vim.fn.strdisplaywidth()` for character width.

Closes #260
  • Loading branch information
OXY2DEV committed Jan 26, 2025
1 parent 19ad950 commit d91c277
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
18 changes: 10 additions & 8 deletions lua/markview/renderers/markdown.lua
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ markdown.output = function (str, buffer)
concat({
_codes.corner_left or "",
_codes.padding_left or "",
inline_code:gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(inline_code)),
_codes.padding_right or "",
_codes.corner_left or ""
})
Expand Down Expand Up @@ -500,7 +500,7 @@ markdown.output = function (str, buffer)
}),
concat({
" ",
(alias or link):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(alias or link)),
" "
})
);
Expand Down Expand Up @@ -534,7 +534,7 @@ markdown.output = function (str, buffer)
_int.corner_left or "",
_int.padding_left or "",
_int.icon or "",
(alias or link):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(alias or link)),
_int.padding_right or "",
_int.corner_right or ""
})
Expand Down Expand Up @@ -933,7 +933,7 @@ markdown.get_visual_text = {
content = utils.escape_string(content);
str_a = utils.escape_string(str_a);

str = str:gsub(str_b .. content .. str_a, utils.escape_string(content):gsub(".", "X"))
str = str:gsub(str_b .. content .. str_a, string.rep("X", vim.fn.strdisplaywidth(content)))

::continue::
---_
Expand All @@ -946,7 +946,7 @@ markdown.get_visual_text = {
striked,
"~~"
}), concat({
utils.escape_string(striked):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(striked))
}));
---_
end
Expand Down Expand Up @@ -978,7 +978,7 @@ markdown.get_visual_text = {
link,
"]",
}), concat({
utils.escape_string(link):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(link))
}))
---_
end
Expand All @@ -992,7 +992,9 @@ markdown.get_visual_text = {
m1,
address,
m2
}), link:gsub(".", "X"));
}),
string.rep("X", vim.fn.strdisplaywidth(link))
);
---_
end

Expand All @@ -1003,7 +1005,7 @@ markdown.get_visual_text = {
link,
"]",
}), concat({
utils.escape_string(link):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(link)),
}))
---_
end
Expand Down
12 changes: 7 additions & 5 deletions lua/markview/renderers/typst.lua
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ typst.get_visual_text = {
link,
"]",
}), concat({
utils.escape_string(link):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(link))
}))
---_
end
Expand All @@ -69,7 +69,9 @@ typst.get_visual_text = {
link,
"]",
address
}), concat({ utils.escape_string(link):gsub(".", "X") }))
}), concat({
string.rep("X", vim.fn.strdisplaywidth(link))
}));
---_
end

Expand All @@ -80,7 +82,7 @@ typst.get_visual_text = {
link,
"]",
}), concat({
utils.escape_string(link):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(link))
}))
---_
end
Expand All @@ -99,7 +101,7 @@ typst.get_visual_text = {
content = utils.escape_string(content);
str_a = utils.escape_string(str_a);

str = str:gsub(str_b .. content .. str_a, utils.escape_string(content):gsub(".", "X"))
str = str:gsub(str_b .. content .. str_a, string.rep("X", vim.fn.strdisplaywidth(content)))

::continue::
---_
Expand All @@ -112,7 +114,7 @@ typst.get_visual_text = {
striked,
"~~"
}), concat({
utils.escape_string(striked):gsub(".", "X"),
string.rep("X", vim.fn.strdisplaywidth(striked))
}));
---_
end
Expand Down

0 comments on commit d91c277

Please sign in to comment.