refactor: lots more writergate fixes - first successful build
This commit is contained in:
parent
5094aa8c85
commit
bf0d4402ea
48 changed files with 404 additions and 413 deletions
|
@ -27,7 +27,7 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
defer palette.allocator.free(buffers);
|
||||
for (buffers) |buffer| {
|
||||
const indicator = tui.get_buffer_state_indicator(buffer);
|
||||
(try palette.entries.addOne()).* = .{
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{
|
||||
.label = buffer.get_file_path(),
|
||||
.icon = buffer.file_type_icon orelse "",
|
||||
.color = buffer.file_type_color,
|
||||
|
@ -42,15 +42,15 @@ pub fn clear_entries(palette: *Type) void {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry.label);
|
||||
try cbor.writeValue(writer, entry.icon);
|
||||
try cbor.writeValue(writer, entry.color);
|
||||
try cbor.writeValue(writer, entry.indicator);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
const hint = hints.get(p.name) orelse "";
|
||||
longest_description = @max(longest_description, p.meta.description.len);
|
||||
longest_total = @max(longest_total, p.meta.description.len + hint.len + 1);
|
||||
(try palette.entries.addOne()).* = .{
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{
|
||||
.label = if (p.meta.description.len > 0) p.meta.description else p.name,
|
||||
.name = p.name,
|
||||
.hint = hint,
|
||||
|
@ -41,14 +41,14 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry.label);
|
||||
try cbor.writeValue(writer, entry.hint);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try cbor.writeValue(writer, entry.id);
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
@ -93,9 +93,10 @@ fn write_state(palette: *Type) !void {
|
|||
const state_file = try std.fmt.bufPrint(&state_file_buffer, "{s}/{s}", .{ try root.get_state_dir(), "commands" });
|
||||
var file = try std.fs.createFileAbsolute(state_file, .{ .truncate = true });
|
||||
defer file.close();
|
||||
var buffer = std.io.bufferedWriter(file.writer());
|
||||
defer buffer.flush() catch {};
|
||||
const writer = buffer.writer();
|
||||
var buf: [4096]u8 = undefined;
|
||||
var file_writer = file.writer(&buf);
|
||||
const writer = &file_writer.interface;
|
||||
defer writer.flush() catch {};
|
||||
|
||||
for (palette.entries.items) |cmd_| {
|
||||
if (cmd_.used_time == 0) continue;
|
||||
|
|
|
@ -26,7 +26,7 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
while (iter.len > 0) {
|
||||
var cbor_item: []const u8 = undefined;
|
||||
if (!try cbor.matchValue(&iter, cbor.extract_cbor(&cbor_item))) return error.BadCompletion;
|
||||
(try palette.entries.addOne()).* = .{ .cbor = cbor_item, .label = undefined, .sort_text = undefined };
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{ .cbor = cbor_item, .label = undefined, .sort_text = undefined };
|
||||
}
|
||||
|
||||
var max_label_len: usize = 0;
|
||||
|
@ -54,12 +54,12 @@ pub fn clear_entries(palette: *Type) void {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try writer.writeAll(entry.cbor);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ pub fn Variant(comptime command: []const u8, comptime label_: []const u8, allow_
|
|||
for (file_type_config.get_all_names()) |file_type_name| {
|
||||
const file_type = try file_type_config.get(file_type_name) orelse unreachable;
|
||||
idx += 1;
|
||||
(try palette.entries.addOne()).* = .{
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{
|
||||
.label = file_type.description orelse file_type_config.default.description,
|
||||
.name = file_type.name,
|
||||
.icon = file_type.icon orelse file_type_config.default.icon,
|
||||
|
@ -59,15 +59,15 @@ pub fn Variant(comptime command: []const u8, comptime label_: []const u8, allow_
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry.label);
|
||||
try cbor.writeValue(writer, entry.icon);
|
||||
try cbor.writeValue(writer, entry.color);
|
||||
try cbor.writeValue(writer, entry.name);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
defer palette.allocator.free(fontfaces);
|
||||
for (fontfaces) |fontface| {
|
||||
idx += 1;
|
||||
(try palette.entries.addOne()).* = .{ .label = fontface };
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{ .label = fontface };
|
||||
if (previous_fontface) |previous_fontface_| if (std.mem.eql(u8, fontface, previous_fontface_)) {
|
||||
palette.initial_selected = idx;
|
||||
};
|
||||
|
@ -47,12 +47,12 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry.label);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,8 +26,9 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
const hints = if (tui.input_mode()) |m| m.keybind_hints else @panic("no keybind hints");
|
||||
var longest_hint: usize = 0;
|
||||
for (command.commands.items) |cmd_| if (cmd_) |p| {
|
||||
var label_ = std.ArrayList(u8).init(palette.allocator);
|
||||
const writer = label_.writer();
|
||||
var label_: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer label_.deinit();
|
||||
const writer = &label_.writer;
|
||||
try writer.writeAll(p.name);
|
||||
if (p.meta.description.len > 0) try writer.print(" ({s})", .{p.meta.description});
|
||||
if (p.meta.arguments.len > 0) {
|
||||
|
@ -47,7 +48,7 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
const hint = hints.get(p.name) orelse "";
|
||||
longest_hint = @max(longest_hint, hint.len);
|
||||
|
||||
(try palette.entries.addOne()).* = .{
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{
|
||||
.label = try label_.toOwnedSlice(),
|
||||
.hint = hint,
|
||||
.id = p.id,
|
||||
|
@ -57,14 +58,14 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry.label);
|
||||
try cbor.writeValue(writer, entry.hint);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try cbor.writeValue(writer, entry.id);
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -139,15 +139,15 @@ fn add_item(
|
|||
indicator: []const u8,
|
||||
matches: ?[]const u8,
|
||||
) !void {
|
||||
var label = std.ArrayList(u8).init(self.allocator);
|
||||
var label: std.Io.Writer.Allocating = .init(self.allocator);
|
||||
defer label.deinit();
|
||||
const writer = label.writer();
|
||||
const writer = &label.writer;
|
||||
try cbor.writeValue(writer, file_name);
|
||||
try cbor.writeValue(writer, file_icon);
|
||||
try cbor.writeValue(writer, file_color);
|
||||
try cbor.writeValue(writer, indicator);
|
||||
if (matches) |cb| _ = try writer.write(cb) else try cbor.writeValue(writer, &[_]usize{});
|
||||
try self.menu.add_item_with_handler(label.items, menu_action_open_file);
|
||||
try self.menu.add_item_with_handler(label.written(), menu_action_open_file);
|
||||
}
|
||||
|
||||
fn receive_project_manager(self: *Self, _: tp.pid_ref, m: tp.message) MessageFilter.Error!bool {
|
||||
|
@ -259,13 +259,13 @@ fn delete_code_point(self: *Self) !void {
|
|||
fn insert_code_point(self: *Self, c: u32) !void {
|
||||
var buf: [6]u8 = undefined;
|
||||
const bytes = try input.ucs32_to_utf8(&[_]u32{c}, &buf);
|
||||
try self.inputbox.text.appendSlice(buf[0..bytes]);
|
||||
try self.inputbox.text.appendSlice(self.allocator, buf[0..bytes]);
|
||||
self.inputbox.cursor = tui.egc_chunk_width(self.inputbox.text.items, 0, 8);
|
||||
return self.start_query();
|
||||
}
|
||||
|
||||
fn insert_bytes(self: *Self, bytes: []const u8) !void {
|
||||
try self.inputbox.text.appendSlice(bytes);
|
||||
try self.inputbox.text.appendSlice(self.allocator, bytes);
|
||||
self.inputbox.cursor = tui.egc_chunk_width(self.inputbox.text.items, 0, 8);
|
||||
return self.start_query();
|
||||
}
|
||||
|
|
|
@ -43,7 +43,7 @@ pub fn load_entries_with_args(palette: *Type, ctx: command.Context) !usize {
|
|||
return error.InvalidMessageField;
|
||||
if (!try cbor.matchValue(&iter, cbor.extract(&open)))
|
||||
return error.InvalidMessageField;
|
||||
(try palette.entries.addOne()).* = .{ .label = try palette.allocator.dupe(u8, name_), .open = open };
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{ .label = try palette.allocator.dupe(u8, name_), .open = open };
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -53,13 +53,13 @@ pub fn clear_entries(palette: *Type) void {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry.label);
|
||||
try cbor.writeValue(writer, if (entry.open) "-" else "");
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -78,7 +78,7 @@ pub fn Create(options: type) type {
|
|||
.icon = if (@hasDecl(options, "icon")) options.icon else null,
|
||||
}))).dynamic_cast(InputBox.State(*Self)) orelse unreachable,
|
||||
.view_rows = get_view_rows(tui.screen()),
|
||||
.entries = std.ArrayList(Entry).init(allocator),
|
||||
.entries = .empty,
|
||||
};
|
||||
if (self.menu.scrollbar) |scrollbar| scrollbar.style_factory = scrollbar_style;
|
||||
self.longest_hint = if (@hasDecl(options, "load_entries_with_args"))
|
||||
|
@ -103,7 +103,7 @@ pub fn Create(options: type) type {
|
|||
self.commands.deinit();
|
||||
if (@hasDecl(options, "deinit"))
|
||||
options.deinit(self);
|
||||
self.entries.deinit();
|
||||
self.entries.deinit(self.allocator);
|
||||
tui.message_filters().remove_ptr(self);
|
||||
if (tui.mainview()) |mv| {
|
||||
mv.floating_views.remove(self.menu.container_widget);
|
||||
|
@ -270,7 +270,7 @@ pub fn Create(options: type) type {
|
|||
}
|
||||
}
|
||||
|
||||
fn query_entries(self: *Self, query: []const u8) error{OutOfMemory}!usize {
|
||||
fn query_entries(self: *Self, query: []const u8) error{ OutOfMemory, WriteFailed }!usize {
|
||||
var searcher = try fuzzig.Ascii.init(
|
||||
self.allocator,
|
||||
self.longest, // haystack max size
|
||||
|
@ -285,12 +285,12 @@ pub fn Create(options: type) type {
|
|||
matches: []const usize,
|
||||
};
|
||||
|
||||
var matches = std.ArrayList(Match).init(self.allocator);
|
||||
var matches: std.ArrayList(Match) = .empty;
|
||||
|
||||
for (self.entries.items) |*entry| {
|
||||
const match = searcher.scoreMatches(entry.label, query);
|
||||
if (match.score) |score|
|
||||
(try matches.addOne()).* = .{
|
||||
(try matches.addOne(self.allocator)).* = .{
|
||||
.entry = entry,
|
||||
.score = score,
|
||||
.matches = try self.allocator.dupe(usize, match.matches),
|
||||
|
@ -343,14 +343,14 @@ pub fn Create(options: type) type {
|
|||
fn insert_code_point(self: *Self, c: u32) !void {
|
||||
var buf: [6]u8 = undefined;
|
||||
const bytes = try input.ucs32_to_utf8(&[_]u32{c}, &buf);
|
||||
try self.inputbox.text.appendSlice(buf[0..bytes]);
|
||||
try self.inputbox.text.appendSlice(self.allocator, buf[0..bytes]);
|
||||
self.inputbox.cursor = tui.egc_chunk_width(self.inputbox.text.items, 0, 8);
|
||||
self.view_pos = 0;
|
||||
return self.start_query(0);
|
||||
}
|
||||
|
||||
fn insert_bytes(self: *Self, bytes: []const u8) !void {
|
||||
try self.inputbox.text.appendSlice(bytes);
|
||||
try self.inputbox.text.appendSlice(self.allocator, bytes);
|
||||
self.inputbox.cursor = tui.egc_chunk_width(self.inputbox.text.items, 0, 8);
|
||||
self.view_pos = 0;
|
||||
return self.start_query(0);
|
||||
|
|
|
@ -30,11 +30,11 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
while (len > 0) : (len -= 1) {
|
||||
var task: []const u8 = undefined;
|
||||
if (try cbor.matchValue(&iter, cbor.extract(&task))) {
|
||||
(try palette.entries.addOne()).* = .{ .label = try palette.allocator.dupe(u8, task) };
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{ .label = try palette.allocator.dupe(u8, task) };
|
||||
} else return error.InvalidTaskMessageField;
|
||||
}
|
||||
(try palette.entries.addOne()).* = .{ .label = "", .command = "add_task" };
|
||||
(try palette.entries.addOne()).* = .{ .label = "", .command = "palette_menu_delete_item" };
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{ .label = "", .command = "add_task" };
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{ .label = "", .command = "palette_menu_delete_item" };
|
||||
return if (palette.entries.items.len == 0) label.len else blk: {
|
||||
var longest: usize = 0;
|
||||
for (palette.entries.items) |item| longest = @max(longest, item.label.len);
|
||||
|
@ -49,12 +49,12 @@ pub fn clear_entries(palette: *Type) void {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
previous_theme = tui.theme().name;
|
||||
for (Widget.themes) |theme| {
|
||||
idx += 1;
|
||||
(try palette.entries.addOne()).* = .{
|
||||
(try palette.entries.addOne(palette.allocator)).* = .{
|
||||
.label = theme.description,
|
||||
.name = theme.name,
|
||||
};
|
||||
|
@ -43,13 +43,13 @@ pub fn load_entries(palette: *Type) !usize {
|
|||
}
|
||||
|
||||
pub fn add_menu_entry(palette: *Type, entry: *Entry, matches: ?[]const usize) !void {
|
||||
var value = std.ArrayList(u8).init(palette.allocator);
|
||||
var value: std.Io.Writer.Allocating = .init(palette.allocator);
|
||||
defer value.deinit();
|
||||
const writer = value.writer();
|
||||
const writer = &value.writer;
|
||||
try cbor.writeValue(writer, entry.label);
|
||||
try cbor.writeValue(writer, entry.name);
|
||||
try cbor.writeValue(writer, matches orelse &[_]usize{});
|
||||
try palette.menu.add_item_with_handler(value.items, select);
|
||||
try palette.menu.add_item_with_handler(value.written(), select);
|
||||
palette.items += 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue