feat: add argument metadata to (most) commands that take parameters

This commit is contained in:
CJ van den Berg 2024-11-21 17:34:11 +01:00
parent ae91afe255
commit 150374afae
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
14 changed files with 85 additions and 78 deletions

View file

@ -315,7 +315,7 @@ pub fn Create(options: type) type {
try self.file_path.appendSlice(buf[0..bytes]);
self.update_mini_mode_text();
}
pub const mini_mode_insert_code_point_meta = .{ .interactive = false };
pub const mini_mode_insert_code_point_meta = .{ .arguments = &.{.integer} };
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
@ -325,7 +325,7 @@ pub fn Create(options: type) type {
try self.file_path.appendSlice(bytes);
self.update_mini_mode_text();
}
pub const mini_mode_insert_bytes_meta = .{ .interactive = false };
pub const mini_mode_insert_bytes_meta = .{ .arguments = &.{.string} };
pub fn mini_mode_select(self: *Self, _: Ctx) Result {
options.select(self);

View file

@ -186,7 +186,7 @@ const cmds = struct {
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}
pub const mini_mode_insert_code_point_meta = .{ .interactive = false };
pub const mini_mode_insert_code_point_meta = .{ .arguments = &.{.integer} };
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
@ -195,7 +195,7 @@ const cmds = struct {
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}
pub const mini_mode_insert_bytes_meta = .{ .interactive = false };
pub const mini_mode_insert_bytes_meta = .{ .arguments = &.{.string} };
pub fn mini_mode_delete_backwards(self: *Self, _: Ctx) Result {
_ = self.input.popOrNull();

View file

@ -135,7 +135,7 @@ const cmds = struct {
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}
pub const mini_mode_insert_code_point_meta = .{ .interactive = false };
pub const mini_mode_insert_code_point_meta = .{ .arguments = &.{.integer} };
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
@ -144,7 +144,7 @@ const cmds = struct {
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}
pub const mini_mode_insert_bytes_meta = .{ .interactive = false };
pub const mini_mode_insert_bytes_meta = .{ .arguments = &.{.string} };
pub fn mini_mode_delete_backwards(self: *Self, _: Ctx) Result {
if (self.input.len > 0) {

View file

@ -130,7 +130,7 @@ const cmds = struct {
self.update_mini_mode_text();
self.goto();
}
pub const mini_mode_insert_code_point_meta = .{ .interactive = false };
pub const mini_mode_insert_code_point_meta = .{ .arguments = &.{.integer} };
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
@ -140,5 +140,5 @@ const cmds = struct {
self.update_mini_mode_text();
self.goto();
}
pub const mini_mode_insert_bytes_meta = .{ .interactive = false };
pub const mini_mode_insert_bytes_meta = .{ .arguments = &.{.string} };
};

View file

@ -106,7 +106,7 @@ const cmds = struct {
const bytes = input.ucs32_to_utf8(&[_]u32{code_point}, &buf) catch return error.InvalidArgument;
return self.execute_operation(command.fmt(.{buf[0..bytes]}));
}
pub const mini_mode_insert_code_point_meta = .{ .interactive = false };
pub const mini_mode_insert_code_point_meta = .{ .arguments = &.{.integer} };
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
@ -114,7 +114,7 @@ const cmds = struct {
return error.InvalidArgument;
return self.execute_operation(ctx);
}
pub const mini_mode_insert_bytes_meta = .{ .interactive = false };
pub const mini_mode_insert_bytes_meta = .{ .arguments = &.{.string} };
pub fn mini_mode_cancel(_: *Self, _: Ctx) Result {
command.executeName("exit_mini_mode", .{}) catch {};

View file

@ -19,7 +19,7 @@ pub const Entry = struct {
pub fn load_entries(palette: *Type) !void {
for (command.commands.items) |cmd_| if (cmd_) |p| {
if (p.meta.interactive)
if (p.meta.description.len > 0)
(try palette.entries.addOne()).* = .{
.label = if (p.meta.description.len > 0) p.meta.description else p.name,
.name = p.name,

View file

@ -277,27 +277,27 @@ const cmds = struct {
pub fn palette_menu_down(self: *Self, _: Ctx) Result {
self.menu.select_down();
}
pub const palette_menu_down_meta = .{ .interactive = false };
pub const palette_menu_down_meta = .{};
pub fn palette_menu_up(self: *Self, _: Ctx) Result {
self.menu.select_up();
}
pub const palette_menu_up_meta = .{ .interactive = false };
pub const palette_menu_up_meta = .{};
pub fn palette_menu_activate(self: *Self, _: Ctx) Result {
self.menu.activate_selected();
}
pub const palette_menu_activate_meta = .{ .interactive = false };
pub const palette_menu_activate_meta = .{};
pub fn palette_menu_activate_quick(self: *Self, _: Ctx) Result {
if (self.menu.selected orelse 0 > 0) self.menu.activate_selected();
}
pub const palette_menu_activate_quick_meta = .{ .interactive = false };
pub const palette_menu_activate_quick_meta = .{};
pub fn palette_menu_cancel(self: *Self, _: Ctx) Result {
try self.cmd("exit_overlay_mode", .{});
}
pub const palette_menu_cancel_meta = .{ .interactive = false };
pub const palette_menu_cancel_meta = .{};
pub fn overlay_delete_word_left(self: *Self, _: Ctx) Result {
self.delete_word() catch |e| return tp.exit_error(e, @errorReturnTrace());
@ -315,7 +315,7 @@ const cmds = struct {
return error.InvalidArgument;
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_code_point_meta = .{ .interactive = false };
pub const overlay_insert_code_point_meta = .{ .arguments = &.{.integer} };
pub fn overlay_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
@ -323,20 +323,20 @@ const cmds = struct {
return error.InvalidArgument;
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_bytes_meta = .{ .interactive = false };
pub const overlay_insert_bytes_meta = .{ .arguments = &.{.string} };
pub fn overlay_release_control(self: *Self, _: Ctx) Result {
if (self.menu.selected orelse 0 > 0) return self.cmd("palette_menu_activate", .{});
}
pub const overlay_release_control_meta = .{ .interactive = false };
pub const overlay_release_control_meta = .{};
pub fn overlay_toggle_panel(self: *Self, _: Ctx) Result {
return self.cmd_async("toggle_panel");
}
pub const overlay_toggle_panel_meta = .{ .interactive = false };
pub const overlay_toggle_panel_meta = .{};
pub fn overlay_toggle_inputview(self: *Self, _: Ctx) Result {
return self.cmd_async("toggle_inputview");
}
pub const overlay_toggle_inputview_meta = .{ .interactive = false };
pub const overlay_toggle_inputview_meta = .{};
};

View file

@ -368,7 +368,7 @@ pub fn Create(options: type) type {
self.menu.select_down();
self.selection_updated();
}
pub const palette_menu_down_meta = .{ .interactive = false };
pub const palette_menu_down_meta = .{};
pub fn palette_menu_up(self: *Self, _: Ctx) Result {
if (self.menu.selected) |selected| {
@ -383,7 +383,7 @@ pub fn Create(options: type) type {
self.menu.select_up();
self.selection_updated();
}
pub const palette_menu_up_meta = .{ .interactive = false };
pub const palette_menu_up_meta = .{};
pub fn palette_menu_pagedown(self: *Self, _: Ctx) Result {
if (self.total_items > self.view_rows) {
@ -395,7 +395,7 @@ pub fn Create(options: type) type {
self.menu.select_last();
self.selection_updated();
}
pub const palette_menu_pagedown_meta = .{ .interactive = false };
pub const palette_menu_pagedown_meta = .{};
pub fn palette_menu_pageup(self: *Self, _: Ctx) Result {
if (self.view_pos > self.view_rows)
@ -406,23 +406,23 @@ pub fn Create(options: type) type {
self.menu.select_first();
self.selection_updated();
}
pub const palette_menu_pageup_meta = .{ .interactive = false };
pub const palette_menu_pageup_meta = .{};
pub fn palette_menu_activate(self: *Self, _: Ctx) Result {
self.menu.activate_selected();
}
pub const palette_menu_activate_meta = .{ .interactive = false };
pub const palette_menu_activate_meta = .{};
pub fn palette_menu_activate_quick(self: *Self, _: Ctx) Result {
if (self.menu.selected orelse 0 > 0) self.menu.activate_selected();
}
pub const palette_menu_activate_quick_meta = .{ .interactive = false };
pub const palette_menu_activate_quick_meta = .{};
pub fn palette_menu_cancel(self: *Self, _: Ctx) Result {
if (@hasDecl(options, "cancel")) try options.cancel(self);
try self.cmd("exit_overlay_mode", .{});
}
pub const palette_menu_cancel_meta = .{ .interactive = false };
pub const palette_menu_cancel_meta = .{};
pub fn overlay_delete_word_left(self: *Self, _: Ctx) Result {
self.delete_word() catch |e| return tp.exit_error(e, @errorReturnTrace());
@ -440,7 +440,7 @@ pub fn Create(options: type) type {
return error.InvalidArgument;
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_code_point_meta = .{ .interactive = false };
pub const overlay_insert_code_point_meta = .{ .arguments = &.{.integer} };
pub fn overlay_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
@ -448,22 +448,22 @@ pub fn Create(options: type) type {
return error.InvalidArgument;
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_bytes_meta = .{ .interactive = false };
pub const overlay_insert_bytes_meta = .{ .arguments = &.{.string} };
pub fn overlay_release_control(self: *Self, _: Ctx) Result {
if (self.menu.selected orelse 0 > 0) return self.cmd("palette_menu_activate", .{});
}
pub const overlay_release_control_meta = .{ .interactive = false };
pub const overlay_release_control_meta = .{};
pub fn overlay_toggle_panel(self: *Self, _: Ctx) Result {
return self.cmd_async("toggle_panel");
}
pub const overlay_toggle_panel_meta = .{ .interactive = false };
pub const overlay_toggle_panel_meta = .{};
pub fn overlay_toggle_inputview(self: *Self, _: Ctx) Result {
return self.cmd_async("toggle_inputview");
}
pub const overlay_toggle_inputview_meta = .{ .interactive = false };
pub const overlay_toggle_inputview_meta = .{};
};
};
}