less: Handle tabs in line wrapping

Before tabs were treated as a width of 1, which would cause issues with
man page headers.
This commit is contained in:
Peter Elliott 2021-12-28 10:26:12 -07:00 committed by Andreas Kling
parent 20a0572de8
commit 23e09eb7f4
Notes: sideshowbarker 2024-07-17 22:01:42 +09:00

View file

@ -75,9 +75,15 @@ static Vector<StringView> wrap_line(String const& string, size_t width)
if (*it == '\e')
in_ansi = true;
if (!in_ansi)
// FIXME: calculate the printed width of the character.
offset++;
if (!in_ansi) {
if (*it == '\t') {
// Tabs are a special case, because their width is variable.
offset += (8 - (offset % 8));
} else {
// FIXME: calculate the printed width of the character.
offset++;
}
}
if (isalpha(*it))
in_ansi = false;