diff --git a/src/Window.zig b/src/Window.zig index 77f9912f8..85603e031 100644 --- a/src/Window.zig +++ b/src/Window.zig @@ -678,6 +678,11 @@ pub fn index(self: *Window) !void { self.terminal.index(); } +pub fn nextLine(self: *Window) !void { + self.terminal.carriageReturn(); + self.terminal.index(); +} + pub fn setTopAndBottomMargin(self: *Window, top: u16, bot: u16) !void { self.terminal.setScrollingRegion(top, bot); } diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 437554022..e1e31f599 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -492,6 +492,10 @@ pub fn carriageReturn(self: *Terminal) void { const tracy = trace(@src()); defer tracy.end(); + // TODO: left/right margin mode + // TODO: origin mode + // TODO: wrap state + self.cursor.x = 0; } diff --git a/src/terminal/stream.zig b/src/terminal/stream.zig index 46630d69b..b49ae6b1d 100644 --- a/src/terminal/stream.zig +++ b/src/terminal/stream.zig @@ -384,6 +384,15 @@ pub fn Stream(comptime Handler: type) type { }, } else log.warn("unimplemented ESC callback: {}", .{action}), + // NEL - Next Line + 'E' => if (@hasDecl(T, "nextLine")) switch (action.intermediates.len) { + 0 => try self.handler.nextLine(), + else => { + log.warn("invalid next line command: {}", .{action}); + return; + }, + } else log.warn("unimplemented ESC callback: {}", .{action}), + // RI - Reverse Index 'M' => if (@hasDecl(T, "reverseIndex")) switch (action.intermediates.len) { 0 => try self.handler.reverseIndex(),