From a680f50771510fec438dd44407ebec32cb57e55d Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 18 Nov 2024 10:50:46 +0100 Subject: [PATCH] fix: always treat control codes as width 1 characters closes: #64 --- src/renderer/vaxis/Plane.zig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/renderer/vaxis/Plane.zig b/src/renderer/vaxis/Plane.zig index 26c9437..57fd511 100644 --- a/src/renderer/vaxis/Plane.zig +++ b/src/renderer/vaxis/Plane.zig @@ -374,7 +374,22 @@ inline fn set_font_style(style: *vaxis.Cell.Style, fs: FontStyle) void { } } +inline fn is_control_code(c: u8) bool { + return switch (c) { + 0...8, 10...31 => true, + else => false, + }; +} + pub fn egc_length(self: *const Plane, egcs: []const u8, colcount: *c_int, abs_col: usize, tab_width: usize) usize { + if (egcs.len == 0) { + colcount.* = 0; + return 0; + } + if (is_control_code(egcs[0])) { + colcount.* = 1; + return 1; + } if (egcs[0] == '\t') { colcount.* = @intCast(tab_width - (abs_col % tab_width)); return 1;