diff --git a/build.zig b/build.zig index 3536614..e6af465 100644 --- a/build.zig +++ b/build.zig @@ -509,6 +509,7 @@ pub fn build_exe( exe.root_module.addImport("renderer", renderer_mod); exe.root_module.addImport("input", input_mod); exe.root_module.addImport("syntax", syntax_mod); + exe.root_module.addImport("color", color_mod); exe.root_module.addImport("version_info", b.createModule(.{ .root_source_file = version_info_file })); if (target.result.os.tag == .windows) { diff --git a/src/list_languages.zig b/src/list_languages.zig index efd6542..f752224 100644 --- a/src/list_languages.zig +++ b/src/list_languages.zig @@ -1,6 +1,7 @@ const std = @import("std"); const syntax = @import("syntax"); const builtin = @import("builtin"); +const RGB = @import("color").RGB; const bin_path = @import("bin_path.zig"); @@ -23,7 +24,7 @@ pub fn list(allocator: std.mem.Allocator, writer: anytype, tty_config: std.io.tt } try tty_config.setColor(writer, .yellow); - try write_string(writer, "Language", max_language_len + 1); + try write_string(writer, " Language", max_language_len + 1 + 4); try write_string(writer, "Extensions", max_extensions_len + 1 + checkmark_width); try write_string(writer, "Language Server", max_langserver_len + 1 + checkmark_width); try write_string(writer, "Formatter", null); @@ -31,6 +32,11 @@ pub fn list(allocator: std.mem.Allocator, writer: anytype, tty_config: std.io.tt try writer.writeAll("\n"); for (syntax.FileType.file_types) |file_type| { + try writer.writeAll(" "); + try setColorRgb(writer, file_type.color); + try writer.writeAll(file_type.icon); + try tty_config.setColor(writer, .reset); + try writer.writeAll(" "); try write_string(writer, file_type.name, max_language_len + 1); try write_segmented(writer, file_type.extensions, ",", max_extensions_len + 1, tty_config); @@ -99,3 +105,9 @@ fn can_execute(allocator: std.mem.Allocator, binary_name: []const u8) bool { defer if (resolved_binary_path) |path| allocator.free(path); return resolved_binary_path != null; } + +fn setColorRgb(writer: anytype, color: u24) !void { + const fg_rgb_legacy = "\x1b[38;2;{d};{d};{d}m"; + const rgb = RGB.from_u24(color); + try writer.print(fg_rgb_legacy, .{ rgb.r, rgb.g, rgb.b }); +}