1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 12:27:35 +00:00

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

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) void VT::clear_lines(size_t count_above, size_t count_below)
{ {
// Go down count_below lines. if (count_below + count_above == 0) {
if (count_below > 0) fputs("\033[2K", stderr);
fprintf(stderr, "\033[%dB", (int)count_below); } else {
// Then clear lines going upwards. // Go down count_below lines.
for (size_t i = count_below + count_above; i > 0; --i) if (count_below > 0)
fputs(i == 1 ? "\033[2K" : "\033[2K\033[A", stderr); 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() void VT::save_cursor()