Fix trimming of line front halfway through a double-width glyph
Insert a space to replace the half glyph and ensure the rest of the line is correctly aligned. Fixes #4843
This commit is contained in:
parent
0630b4f4f6
commit
afaa47e93f
|
@ -253,14 +253,18 @@ bool DisplayLine::trim_from(ColumnCount first_col, ColumnCount front, ColumnCoun
|
||||||
}
|
}
|
||||||
|
|
||||||
auto front_it = it;
|
auto front_it = it;
|
||||||
|
Face last_face{};
|
||||||
while (front > 0 and it != end())
|
while (front > 0 and it != end())
|
||||||
{
|
{
|
||||||
front -= it->trim_begin(front);
|
front -= it->trim_begin(front);
|
||||||
kak_assert(it->empty() or front == 0);
|
kak_assert(it->empty() or front <= 0);
|
||||||
|
last_face = it->face;
|
||||||
if (it->empty())
|
if (it->empty())
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
m_atoms.erase(front_it, it);
|
it = m_atoms.erase(front_it, it);
|
||||||
|
if (front < 0)
|
||||||
|
it = m_atoms.insert(it, DisplayAtom{String{' ', -front}, last_face});
|
||||||
|
|
||||||
it = begin();
|
it = begin();
|
||||||
for (; it != end() and col_count > 0; ++it)
|
for (; it != end() and col_count > 0; ++it)
|
||||||
|
|
1
test/regression/4843-trim-front-split-glyph/cmd
Normal file
1
test/regression/4843-trim-front-split-glyph/cmd
Normal file
|
@ -0,0 +1 @@
|
||||||
|
lvl
|
4
test/regression/4843-trim-front-split-glyph/in
Normal file
4
test/regression/4843-trim-front-split-glyph/in
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
abc
|
||||||
|
⌛c
|
||||||
|
⌛d
|
||||||
|
⌛e
|
2
test/regression/4843-trim-front-split-glyph/rc
Normal file
2
test/regression/4843-trim-front-split-glyph/rc
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
add-highlighter window/ regex d 0:green
|
||||||
|
add-highlighter window/ regex ^[^\n]+e 0:yellow
|
2
test/regression/4843-trim-front-split-glyph/script
Normal file
2
test/regression/4843-trim-front-split-glyph/script
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
ui_out -ignore 1
|
||||||
|
ui_out '{ "jsonrpc": "2.0", "method": "draw", "params": [[[{ "face": { "fg": "black", "bg": "white", "underline": "default", "attributes": [] }, "contents": "b" }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": "c\u000a" }], [{ "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": "c\u000a" }], [{ "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "green", "bg": "default", "underline": "default", "attributes": [] }, "contents": "d" }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": "\u000a" }], [{ "face": { "fg": "yellow", "bg": "default", "underline": "default", "attributes": [] }, "contents": " " }, { "face": { "fg": "yellow", "bg": "default", "underline": "default", "attributes": [] }, "contents": "e" }, { "face": { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, "contents": "\u000a" }]], { "fg": "default", "bg": "default", "underline": "default", "attributes": [] }, { "fg": "blue", "bg": "default", "underline": "default", "attributes": [] }] }'
|
Loading…
Reference in New Issue
Block a user