diff --git a/examples/text_view.zig b/examples/text_view.zig index 17927be..71e4472 100644 --- a/examples/text_view.zig +++ b/examples/text_view.zig @@ -9,31 +9,24 @@ const Event = union(enum) { winsize: vaxis.Winsize, }; -pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; +pub fn main(init: std.process.Init) !void { + const io = init.io; + const alloc = init.gpa; - defer { - const deinit_status = gpa.deinit(); - if (deinit_status == .leak) { - log.err("memory leak", .{}); - } - } - - const alloc = gpa.allocator(); var buffer: [1024]u8 = undefined; - var tty = try vaxis.Tty.init(&buffer); + var tty: vaxis.Tty = try .init(io, &buffer); defer tty.deinit(); - var vx = try vaxis.init(alloc, .{}); + + var vx = try vaxis.init(io, alloc, init.environ_map, .{}); defer vx.deinit(alloc, tty.writer()); - var loop: vaxis.Loop(Event) = .{ - .vaxis = &vx, - .tty = &tty, - }; - try loop.init(); + + var loop: vaxis.Loop(Event) = .init(io, &tty, &vx); try loop.start(); defer loop.stop(); + try vx.enterAltScreen(tty.writer()); try vx.queryTerminal(tty.writer(), 20 * std.time.ns_per_s); + var text_view = TextView{}; var text_view_buffer = TextView.Buffer{}; defer text_view_buffer.deinit(alloc); @@ -43,7 +36,7 @@ pub fn main() !void { var lineBuf: [128]u8 = undefined; while (true) { - const event = loop.nextEvent(); + const event = try loop.nextEvent(); switch (event) { .key_press => |key| { // Close demo diff --git a/src/widgets/TextView.zig b/src/widgets/TextView.zig index 45f9e44..7c47033 100644 --- a/src/widgets/TextView.zig +++ b/src/widgets/TextView.zig @@ -29,7 +29,7 @@ pub const BufferWriter = struct { }; pub const Buffer = struct { - const StyleList = std.ArrayListUnmanaged(vaxis.Style); + const StyleList = std.ArrayList(vaxis.Style); const StyleMap = std.HashMapUnmanaged(usize, usize, std.hash_map.AutoContext(usize), std.hash_map.default_max_load_percentage); pub const Content = struct { @@ -44,10 +44,10 @@ pub const Buffer = struct { pub const Error = error{OutOfMemory}; - grapheme: std.MultiArrayList(Grapheme) = .{}, - content: std.ArrayListUnmanaged(u8) = .{}, - style_list: StyleList = .{}, - style_map: StyleMap = .{}, + grapheme: std.MultiArrayList(Grapheme) = .empty, + content: std.ArrayListUnmanaged(u8) = .empty, + style_list: StyleList = .empty, + style_map: StyleMap = .empty, rows: usize = 0, cols: usize = 0, // used when appending to a buffer @@ -82,10 +82,10 @@ pub const Buffer = struct { var grapheme_start: usize = 0; var prev_break: bool = true; - while (iter.next()) |result| { + while (iter.nextCodePoint()) |result| { if (prev_break and !result.is_break) { // Start of a new grapheme - const cp_len: usize = std.unicode.utf8CodepointSequenceLength(result.cp) catch 1; + const cp_len: usize = std.unicode.utf8CodepointSequenceLength(result.code_point) catch 1; grapheme_start = iter.i - cp_len; }