aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2024-05-27 10:47:53 -0700
committerAndrew Kelley <andrew@ziglang.org>2024-05-27 20:56:48 -0700
commit64c6a5092cc8910eb597e52b52e744de5e54ba7f (patch)
treea10787a545910c88c8eb274cc86280be51d170b4 /lib/std
parentdc3a192ae841706bb965218c68b0085bbec2b35e (diff)
downloadzig-64c6a5092cc8910eb597e52b52e744de5e54ba7f.tar.gz
zig-64c6a5092cc8910eb597e52b52e744de5e54ba7f.zip
std.Progress: elide root node if empty
when the root progress node has a zero length name, the sub-tree is flattened one layer, reducing visual noise, as well as bytes written to the terminal.
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/Progress.zig10
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig
index 412245d3e6..12874125e2 100644
--- a/lib/std/Progress.zig
+++ b/lib/std/Progress.zig
@@ -879,6 +879,11 @@ fn computePrefix(
var i = start_i;
const parent_index = serialized.parents[@intFromEnum(node_index)].unwrap() orelse return i;
if (serialized.parents[@intFromEnum(parent_index)] == .none) return i;
+ if (@intFromEnum(serialized.parents[@intFromEnum(parent_index)]) == 0 and
+ serialized.storage[0].name[0] == 0)
+ {
+ return i;
+ }
i = computePrefix(buf, i, serialized, children, parent_index);
if (children[@intFromEnum(parent_index)].sibling == .none) {
const prefix = " ";
@@ -917,7 +922,10 @@ fn computeNode(
const name = if (std.mem.indexOfScalar(u8, &storage.name, 0)) |end| storage.name[0..end] else &storage.name;
const parent = serialized.parents[@intFromEnum(node_index)];
- if (parent != .none) {
+ if (parent != .none) p: {
+ if (@intFromEnum(parent) == 0 and serialized.storage[0].name[0] == 0) {
+ break :p;
+ }
if (children[@intFromEnum(node_index)].sibling == .none) {
buf[i..][0..tree_langle.len].* = tree_langle.*;
i += tree_langle.len;