From f5ed8770acb3d1e2c382d92050d73090fa06ec96 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Tue, 3 Aug 2021 17:31:39 +0200 Subject: [PATCH] Highlight default option in prompts --- src/lib.zig | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib.zig b/src/lib.zig index e0465c878563237fdc1ab14fc79df9a3291d21e0..65bbd5a8f2647ce893fa367e4960ab8cebce43a7 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -43,6 +43,7 @@ fn clean(out: anytype, n: usize) !void { pub fn forEnum(out: anytype, in: anytype, comptime prompt: []const u8, alloc: *std.mem.Allocator, comptime options: type, default: ?options) !options { comptime std.debug.assert(@typeInfo(options) == .Enum); + const def: ?[]const u8 = if (default) |d| @tagName(d) else null; try out.print(comptime ansi.color.Fg(.Green, "? "), .{}); try out.print(comptime ansi.color.Bold(prompt ++ " "), .{}); @@ -50,14 +51,17 @@ pub fn forEnum(out: anytype, in: anytype, comptime prompt: []const u8, alloc: *s try out.print(ansi.style.Faint ++ "(", .{}); inline for (std.meta.fields(options)) |f, i| { if (i != 0) try out.print("/", .{}); - try out.print(f.name, .{}); + if (std.mem.eql(u8, f.name, def orelse "")) { + try out.print(ansi.style.ResetIntensity, .{}); + try out.print(comptime ansi.color.Fg(.Cyan, f.name), .{}); + try out.print(ansi.style.Faint, .{}); + } else try out.print(f.name, .{}); } try out.print(")" ++ ansi.style.ResetIntensity ++ " ", .{}); var value: options = undefined; var i: usize = 0; while (true) { - const def: ?[]const u8 = if (default) |d| @tagName(d) else null; const p = try doprompt(out, in, alloc, def); defer if (!std.mem.eql(u8, p.value, def orelse "")) alloc.free(p.value); -- 2.54.0