From df7e91a5e531ccf9f98c320f8f6b4c5e62bb7b81 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 11 May 2022 10:07:33 -0700 Subject: [PATCH] hook up setMode --- src/Window.zig | 12 ++++++++++++ src/terminal/Terminal.zig | 4 ++++ src/terminal/main.zig | 3 +++ 3 files changed, 19 insertions(+) diff --git a/src/Window.zig b/src/Window.zig index 62f8bf338..c1f8f2484 100644 --- a/src/Window.zig +++ b/src/Window.zig @@ -564,3 +564,15 @@ pub fn eraseChars(self: *Window, count: usize) !void { pub fn reverseIndex(self: *Window) !void { try self.terminal.reverseIndex(self.alloc); } + +pub fn setMode(self: *Window, mode: terminal.Mode, enabled: bool) !void { + switch (mode) { + .origin => { + self.terminal.mode_origin = enabled; + self.terminal.setCursorPos(1, 1); + unreachable; // TODO: implement + }, + + else => if (enabled) log.warn("unimplemented mode: {}", .{mode}), + } +} diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index d45898696..17e101f70 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -31,6 +31,10 @@ cols: usize, /// The current scrolling region. scrolling_region: ScrollingRegion, +/// Modes +// TODO: turn into a bitset probably +mode_origin: bool = false, + /// Screen represents a presentable terminal screen made up of lines and cells. const Screen = std.ArrayListUnmanaged(Line); const Line = std.ArrayListUnmanaged(Cell); diff --git a/src/terminal/main.zig b/src/terminal/main.zig index 16da41dcc..33ddf90ba 100644 --- a/src/terminal/main.zig +++ b/src/terminal/main.zig @@ -1,15 +1,18 @@ const stream = @import("stream.zig"); +const ansi = @import("ansi.zig"); const csi = @import("csi.zig"); pub const Terminal = @import("Terminal.zig"); pub const Parser = @import("Parser.zig"); pub const Stream = stream.Stream; +pub const Mode = ansi.Mode; pub const EraseDisplay = csi.EraseDisplay; pub const EraseLine = csi.EraseLine; // Not exported because they're just used for tests. test { + _ = ansi; _ = csi; _ = stream; _ = Parser;