this repo has no description
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

get text_view example working

authored by

Jeffrey C. Ollie and committed by
Tim Culverhouse
273a0167 48d24acd

+18 -25
+11 -18
examples/text_view.zig
··· 9 9 winsize: vaxis.Winsize, 10 10 }; 11 11 12 - pub fn main() !void { 13 - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 12 + pub fn main(init: std.process.Init) !void { 13 + const io = init.io; 14 + const alloc = init.gpa; 14 15 15 - defer { 16 - const deinit_status = gpa.deinit(); 17 - if (deinit_status == .leak) { 18 - log.err("memory leak", .{}); 19 - } 20 - } 21 - 22 - const alloc = gpa.allocator(); 23 16 var buffer: [1024]u8 = undefined; 24 - var tty = try vaxis.Tty.init(&buffer); 17 + var tty: vaxis.Tty = try .init(io, &buffer); 25 18 defer tty.deinit(); 26 - var vx = try vaxis.init(alloc, .{}); 19 + 20 + var vx = try vaxis.init(io, alloc, init.environ_map, .{}); 27 21 defer vx.deinit(alloc, tty.writer()); 28 - var loop: vaxis.Loop(Event) = .{ 29 - .vaxis = &vx, 30 - .tty = &tty, 31 - }; 32 - try loop.init(); 22 + 23 + var loop: vaxis.Loop(Event) = .init(io, &tty, &vx); 33 24 try loop.start(); 34 25 defer loop.stop(); 26 + 35 27 try vx.enterAltScreen(tty.writer()); 36 28 try vx.queryTerminal(tty.writer(), 20 * std.time.ns_per_s); 29 + 37 30 var text_view = TextView{}; 38 31 var text_view_buffer = TextView.Buffer{}; 39 32 defer text_view_buffer.deinit(alloc); ··· 43 36 var lineBuf: [128]u8 = undefined; 44 37 45 38 while (true) { 46 - const event = loop.nextEvent(); 39 + const event = try loop.nextEvent(); 47 40 switch (event) { 48 41 .key_press => |key| { 49 42 // Close demo
+7 -7
src/widgets/TextView.zig
··· 29 29 }; 30 30 31 31 pub const Buffer = struct { 32 - const StyleList = std.ArrayListUnmanaged(vaxis.Style); 32 + const StyleList = std.ArrayList(vaxis.Style); 33 33 const StyleMap = std.HashMapUnmanaged(usize, usize, std.hash_map.AutoContext(usize), std.hash_map.default_max_load_percentage); 34 34 35 35 pub const Content = struct { ··· 44 44 45 45 pub const Error = error{OutOfMemory}; 46 46 47 - grapheme: std.MultiArrayList(Grapheme) = .{}, 48 - content: std.ArrayListUnmanaged(u8) = .{}, 49 - style_list: StyleList = .{}, 50 - style_map: StyleMap = .{}, 47 + grapheme: std.MultiArrayList(Grapheme) = .empty, 48 + content: std.ArrayListUnmanaged(u8) = .empty, 49 + style_list: StyleList = .empty, 50 + style_map: StyleMap = .empty, 51 51 rows: usize = 0, 52 52 cols: usize = 0, 53 53 // used when appending to a buffer ··· 82 82 var grapheme_start: usize = 0; 83 83 var prev_break: bool = true; 84 84 85 - while (iter.next()) |result| { 85 + while (iter.nextCodePoint()) |result| { 86 86 if (prev_break and !result.is_break) { 87 87 // Start of a new grapheme 88 - const cp_len: usize = std.unicode.utf8CodepointSequenceLength(result.cp) catch 1; 88 + const cp_len: usize = std.unicode.utf8CodepointSequenceLength(result.code_point) catch 1; 89 89 grapheme_start = iter.i - cp_len; 90 90 } 91 91