zsh: handle short boolean flags

This commit is contained in:
Maciej Bartczak
2024-12-30 10:29:28 +01:00
parent 87bd0bb744
commit aed61b62ae

View File

@ -47,6 +47,8 @@ fn writeZshCompletions(writer: anytype) !void {
if (field.name[0] == '_') continue;
try writer.writeAll(" \"--");
try writer.writeAll(field.name);
if (@typeInfo(field.type) != .Bool) {
try writer.writeAll("=-:::");
if (std.mem.startsWith(u8, field.name, "font-family"))
@ -60,7 +62,6 @@ fn writeZshCompletions(writer: anytype) !void {
else {
try writer.writeAll("(");
switch (@typeInfo(field.type)) {
.Bool => try writer.writeAll("true false"),
.Enum => |info| {
for (info.fields, 0..) |f, i| {
if (i > 0) try writer.writeAll(" ");
@ -92,6 +93,7 @@ fn writeZshCompletions(writer: anytype) !void {
}
try writer.writeAll(")");
}
}
try writer.writeAll("\" \\\n");
}
@ -170,9 +172,11 @@ fn writeZshCompletions(writer: anytype) !void {
try writer.writeAll(padding ++ " '--");
try writer.writeAll(opt.name);
if (@typeInfo(opt.type) != .Bool) {
try writer.writeAll("=-:::");
switch (@typeInfo(opt.type)) {
.Bool => try writer.writeAll("(true false)"),
.Enum => |info| {
try writer.writeAll("(");
for (info.fields, 0..) |f, i| {
@ -204,6 +208,8 @@ fn writeZshCompletions(writer: anytype) !void {
} else try writer.writeAll("( )");
},
}
}
try writer.writeAll("' \\\n");
}
try writer.writeAll(padding ++ ";;\n");