Skip to content

Commit cc3aa38

Browse files
committed
fix(messages): Mismatched line count & extmark count no longer breaks messages
1 parent d5e1e35 commit cc3aa38

1 file changed

Lines changed: 20 additions & 1 deletion

File tree

lua/ui/message.lua

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ message.__replace = function (kind, content, add_to_history)
400400
-- to be added to the history.
401401
message.history[message.id] = {
402402
kind = kind,
403-
content = { {1, "hi", 178 }} or content
403+
content = content
404404
};
405405
message.id = message.id + 1;
406406
else
@@ -971,6 +971,21 @@ message.__history = function (entries)
971971
{}
972972
};
973973

974+
--- Equalizes line & extmark count.
975+
---@param _lines string[]
976+
---@param _exts ( ui.message.hl_fragment[] )[]
977+
local function lines_exts_equal (_lines, _exts)
978+
if #_lines < #_exts then
979+
for _ = 1, #_exts - #_lines do
980+
table.insert(lines, "");
981+
end
982+
elseif #_lines > #_exts then
983+
for _ = 1, #_lines - #_exts do
984+
table.insert(exts, {});
985+
end
986+
end
987+
end
988+
974989
---|fS
975990

976991
if vim.g.__ui_history_pref == "vim" and entries then
@@ -980,6 +995,8 @@ message.__history = function (entries)
980995

981996
lines = vim.list_extend(lines, _lines);
982997
exts = vim.list_extend(exts, _exts);
998+
999+
lines_exts_equal(lines, exts);
9831000
end
9841001
else
9851002
-- Show history from `ui.nvim`.
@@ -1013,6 +1030,8 @@ message.__history = function (entries)
10131030

10141031
lines = vim.list_extend(lines, m_lines)
10151032
exts = vim.list_extend(exts, m_exts)
1033+
1034+
lines_exts_equal(lines, exts);
10161035
end
10171036
end
10181037

0 commit comments

Comments
 (0)