| ... | ... | @@ -367,12 +367,23 @@ fn clearTerminal() void { |
| 367 | 367 | buf[i..][0..start_sync.len].* = start_sync.*; |
| 368 | 368 | i += start_sync.len; |
| 369 | 369 | |
| 370 | i = computeClear(buf, i); |
| 371 | |
| 372 | buf[i..][0..finish_sync.len].* = finish_sync.*; |
| 373 | i += finish_sync.len; |
| 374 | |
| 375 | write(buf[0..i]); |
| 376 | } |
| 377 | |
| 378 | fn computeClear(buf: []u8, start_i: usize) usize { |
| 379 | var i = start_i; |
| 380 | |
| 370 | 381 | const prev_nl_n = global_progress.newline_count; |
| 371 | 382 | if (prev_nl_n > 0) { |
| 372 | 383 | global_progress.newline_count = 0; |
| 373 | 384 | buf[i] = '\r'; |
| 374 | 385 | i += 1; |
| 375 | | for (0..prev_nl_n) |_| { |
| 386 | for (1..prev_nl_n) |_| { |
| 376 | 387 | buf[i..][0..up_one_line.len].* = up_one_line.*; |
| 377 | 388 | i += up_one_line.len; |
| 378 | 389 | } |
| ... | ... | @@ -381,10 +392,7 @@ fn clearTerminal() void { |
| 381 | 392 | buf[i..][0..clear.len].* = clear.*; |
| 382 | 393 | i += clear.len; |
| 383 | 394 | |
| 384 | | buf[i..][0..finish_sync.len].* = finish_sync.*; |
| 385 | | i += finish_sync.len; |
| 386 | | |
| 387 | | write(buf[0..i]); |
| 395 | return i; |
| 388 | 396 | } |
| 389 | 397 | |
| 390 | 398 | const Children = struct { |
| ... | ... | @@ -467,25 +475,13 @@ fn computeRedraw() []u8 { |
| 467 | 475 | buf[i..][0..start_sync.len].* = start_sync.*; |
| 468 | 476 | i += start_sync.len; |
| 469 | 477 | |
| 470 | | const prev_nl_n = global_progress.newline_count; |
| 471 | | if (prev_nl_n > 0) { |
| 472 | | global_progress.newline_count = 0; |
| 473 | | buf[i] = '\r'; |
| 474 | | i += 1; |
| 475 | | for (0..prev_nl_n) |_| { |
| 476 | | buf[i..][0..up_one_line.len].* = up_one_line.*; |
| 477 | | i += up_one_line.len; |
| 478 | | } |
| 479 | | } |
| 480 | | |
| 481 | | buf[i..][0..clear.len].* = clear.*; |
| 482 | | i += clear.len; |
| 478 | i = computeClear(buf, i); |
| 483 | 479 | |
| 484 | 480 | const root_node_index: Node.Index = @enumFromInt(0); |
| 485 | 481 | i = computeNode(buf, i, serialized_node_storage, serialized_node_parents, children, root_node_index); |
| 486 | 482 | |
| 487 | 483 | // Truncate trailing newline. |
| 488 | | //if (buf[i - 1] == '\n') i -= 1; |
| 484 | if (buf[i - 1] == '\n') i -= 1; |
| 489 | 485 | |
| 490 | 486 | buf[i..][0..finish_sync.len].* = finish_sync.*; |
| 491 | 487 | i += finish_sync.len; |