LibLine: Make clear_lines() work when only clearing the current line

This commit is contained in:
AnotherTest 2021-02-21 04:37:43 +03:30 committed by Andreas Kling
parent 6472e5239c
commit 9790ee4649
Notes: sideshowbarker 2024-07-18 22:04:30 +09:00

View File

@ -1531,12 +1531,16 @@ void VT::apply_style(const Style& style, bool is_starting)
void VT::clear_lines(size_t count_above, size_t count_below)
{
// Go down count_below lines.
if (count_below > 0)
fprintf(stderr, "\033[%dB", (int)count_below);
// Then clear lines going upwards.
for (size_t i = count_below + count_above; i > 0; --i)
fputs(i == 1 ? "\033[2K" : "\033[2K\033[A", stderr);
if (count_below + count_above == 0) {
fputs("\033[2K", stderr);
} else {
// Go down count_below lines.
if (count_below > 0)
fprintf(stderr, "\033[%dB", (int)count_below);
// Then clear lines going upwards.
for (size_t i = count_below + count_above; i > 0; --i)
fputs(i == 1 ? "\033[2K" : "\033[2K\033[A", stderr);
}
}
void VT::save_cursor()