KIND OF handle mode 3 (132 col mode)

This gets vttest looking slightly better on test 1, page 4. It still
isn't correct but we're looking better.
This commit is contained in:
Mitchell Hashimoto
2022-07-15 09:34:17 -07:00
parent 1f12577b8c
commit 8dbb6343f4
2 changed files with 20 additions and 0 deletions

View File

@ -773,6 +773,23 @@ pub fn setMode(self: *Window, mode: terminal.Mode, enabled: bool) !void {
.bracketed_paste => self.bracketed_paste = true,
.enable_mode_3 => self.terminal.modes.enable_mode_3 = @boolToInt(enabled),
.@"132_column" => mode3: {
// TODO: test this
// Do nothing if "enable mode 3" is not set.
if (self.terminal.modes.enable_mode_3 == 0) break :mode3;
// Set it
self.terminal.modes.@"132_column" = @boolToInt(enabled);
// TODO: do not clear screen flag mode
self.terminal.eraseDisplay(.complete);
self.terminal.setCursorPos(1, 1);
// TODO: left/right margins
},
else => if (enabled) log.warn("unimplemented mode: {}", .{mode}),
}
}

View File

@ -47,6 +47,9 @@ modes: packed struct {
reverse_colors: u1 = 0, // 5,
origin: u1 = 0, // 6
autowrap: u1 = 1, // 7
@"132_column": u1 = 0, // 3,
enable_mode_3: u1 = 0, // 40
} = .{},
/// Scrolling region is the area of the screen designated where scrolling