refactor: eliminate generic InvalidArgument errors

InvalidArgument is too generic and makes tracking the source of the
error potentially difficult.
This commit is contained in:
CJ van den Berg 2024-12-12 17:02:11 +01:00
parent 4ec66be2d4
commit a5849a7dab
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
10 changed files with 42 additions and 42 deletions

View file

@ -1843,7 +1843,7 @@ pub const Editor = struct {
var y: i32 = 0;
var x: i32 = 0;
if (!try ctx.args.match(.{ tp.extract(&y), tp.extract(&x) }))
return error.InvalidArgument;
return error.InvalidDragToArgument;
return self.primary_drag(y, x);
}
pub const drag_to_meta = .{ .arguments = &.{ .integer, .integer } };
@ -3114,7 +3114,7 @@ pub const Editor = struct {
pub fn insert_chars(self: *Self, ctx: Context) Result {
var chars: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&chars)}))
return error.InvalidArgument;
return error.InvalidInsertCharsArgument;
const b = try self.buf_for_update();
var root = b.root;
for (self.cursels.items) |*cursel_| if (cursel_.*) |*cursel| {
@ -3410,7 +3410,7 @@ pub const Editor = struct {
if (ctx.args.match(.{tp.extract(&file_path)}) catch false) {
try self.open(file_path);
self.clamp();
} else return error.InvalidArgument;
} else return error.InvalidOpenBufferFromFileArgument;
}
pub const open_buffer_from_file_meta = .{ .arguments = &.{.string} };
@ -3420,7 +3420,7 @@ pub const Editor = struct {
if (ctx.args.match(.{ tp.extract(&file_path), tp.extract(&content) }) catch false) {
try self.open_scratch(file_path, content);
self.clamp();
} else return error.InvalidArgument;
} else return error.InvalidOpenScratchBufferArgument;
}
pub const open_scratch_buffer_meta = .{ .arguments = &.{ .string, .string } };
@ -3450,7 +3450,7 @@ pub const Editor = struct {
var file_path: []const u8 = undefined;
if (ctx.args.match(.{tp.extract(&file_path)}) catch false) {
try self.save_as(file_path);
} else return error.InvalidArgument;
} else return error.InvalidSafeFileAsArgument;
}
pub const save_file_as_meta = .{ .arguments = &.{.string} };
@ -3471,7 +3471,7 @@ pub const Editor = struct {
if (ctx.args.match(.{tp.extract(&query)}) catch false) {
try self.find_in_buffer(query);
self.clamp();
} else return error.InvalidArgument;
} else return error.InvalidFindQueryArgument;
}
pub const find_query_meta = .{ .arguments = &.{.string} };
@ -3837,7 +3837,7 @@ pub const Editor = struct {
try self.send_editor_jump_source();
var line: usize = 0;
if (!try ctx.args.match(.{tp.extract(&line)}))
return error.InvalidArgument;
return error.InvalidGotoLineArgument;
const root = self.buf_root() catch return;
self.cancel_all_selections();
const primary = self.get_primary();
@ -3850,7 +3850,7 @@ pub const Editor = struct {
pub fn goto_column(self: *Self, ctx: Context) Result {
var column: usize = 0;
if (!try ctx.args.match(.{tp.extract(&column)}))
return error.InvalidArgument;
return error.InvalidGotoColumnArgument;
const root = self.buf_root() catch return;
const primary = self.get_primary();
try primary.cursor.move_to(root, primary.cursor.row, @intCast(if (column < 1) 0 else column - 1), self.metrics);
@ -3879,7 +3879,7 @@ pub const Editor = struct {
})) {
// self.logger.print("goto: l:{d} c:{d} {any}", .{ line, column, sel });
have_sel = true;
} else return error.InvalidArgument;
} else return error.InvalidGotoLineAndColumnArgument;
self.cancel_all_selections();
const root = self.buf_root() catch return;
const primary = self.get_primary();
@ -4012,7 +4012,7 @@ pub const Editor = struct {
pub fn select(self: *Self, ctx: Context) Result {
var sel: Selection = .{};
if (!try ctx.args.match(.{ tp.extract(&sel.begin.row), tp.extract(&sel.begin.col), tp.extract(&sel.end.row), tp.extract(&sel.end.col) }))
return error.InvalidArgument;
return error.InvalidSelectArgument;
self.get_primary().selection = sel;
}
pub const select_meta = .{ .arguments = &.{ .integer, .integer, .integer, .integer } };
@ -4041,7 +4041,7 @@ pub const Editor = struct {
pub fn filter(self: *Self, ctx: Context) Result {
if (!try ctx.args.match(.{ tp.string, tp.more }))
return error.InvalidArgument;
return error.InvalidFilterArgument;
try self.filter_cmd(ctx.args);
}
pub const filter_meta = .{ .arguments = &.{.string} };
@ -4286,7 +4286,7 @@ pub const Editor = struct {
pub fn set_file_type(self: *Self, ctx: Context) Result {
var file_type: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&file_type)}))
return error.InvalidArgument;
return error.InvalidSetFileTypeArgument;
if (self.syntax) |syn| syn.destroy();
self.syntax_last_rendered_root = null;

View file

@ -311,26 +311,26 @@ const cmds = struct {
while (len > 0) : (len -= 1) {
var field_name: []const u8 = undefined;
if (!try cbor.matchString(&iter, &field_name))
return error.InvalidArgument;
return error.InvalidNavigateArgumentFieldName;
if (std.mem.eql(u8, field_name, "line")) {
if (!try cbor.matchValue(&iter, cbor.extract(&line)))
return error.InvalidArgument;
return error.InvalidNavigateLineArgument;
} else if (std.mem.eql(u8, field_name, "column")) {
if (!try cbor.matchValue(&iter, cbor.extract(&column)))
return error.InvalidArgument;
return error.InvalidNavigateColumnArgument;
} else if (std.mem.eql(u8, field_name, "file")) {
if (!try cbor.matchValue(&iter, cbor.extract(&file)))
return error.InvalidArgument;
return error.InvalidNavigateFileArgument;
} else if (std.mem.eql(u8, field_name, "goto")) {
if (!try cbor.matchValue(&iter, cbor.extract_cbor(&goto_args)))
return error.InvalidArgument;
return error.InvalidNavigateGotoArgument;
} else {
try cbor.skipValue(&iter);
}
}
} else |_| if (ctx.args.match(tp.extract(&file_name)) catch false) {
file = file_name;
} else return error.InvalidArgument;
} else return error.InvalidNavigateArgument;
if (tp.env.get().str("project").len == 0) {
try open_project_cwd(self, .{});
@ -510,7 +510,7 @@ const cmds = struct {
tp.extract(&sel.begin.col),
tp.extract(&sel.end.row),
tp.extract(&sel.end.col),
})) return error.InvalidArgument;
})) return error.InvalidAddDiagnosticArgument;
file_path = project_manager.normalize_file_path(file_path);
if (self.get_active_editor()) |editor| if (std.mem.eql(u8, file_path, editor.file_path orelse ""))
try editor.add_diagnostic(file_path, source, code, message, severity, sel)
@ -530,7 +530,7 @@ const cmds = struct {
pub fn clear_diagnostics(self: *Self, ctx: Ctx) Result {
var file_path: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&file_path)})) return error.InvalidArgument;
if (!try ctx.args.match(.{tp.extract(&file_path)})) return error.InvalidClearDiagnosticsArgument;
file_path = project_manager.normalize_file_path(file_path);
if (self.get_active_editor()) |editor| if (std.mem.eql(u8, file_path, editor.file_path orelse ""))
editor.clear_diagnostics();
@ -574,7 +574,7 @@ const cmds = struct {
pub fn find_in_files_query(self: *Self, ctx: Ctx) Result {
var query: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&query)})) return error.InvalidArgument;
if (!try ctx.args.match(.{tp.extract(&query)})) return error.InvalidFindInFilesQueryArgument;
log.logger("find").print("finding files...", .{});
const find_f = ripgrep.find_in_files;
if (std.mem.indexOfScalar(u8, query, '\n')) |_| return;

View file

@ -300,7 +300,7 @@ pub fn Create(options: type) type {
pub fn mini_mode_insert_code_point(self: *Self, ctx: Ctx) Result {
var egc: u32 = 0;
if (!try ctx.args.match(.{tp.extract(&egc)}))
return error.InvalidArgument;
return error.InvalidFileBrowserInsertCodePointArgument;
self.complete_trigger_count = 0;
var buf: [32]u8 = undefined;
const bytes = try input.ucs32_to_utf8(&[_]u32{egc}, &buf);
@ -312,7 +312,7 @@ pub fn Create(options: type) type {
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&bytes)}))
return error.InvalidArgument;
return error.InvalidFileBrowserInsertBytesArgument;
self.complete_trigger_count = 0;
try self.file_path.appendSlice(bytes);
self.update_mini_mode_text();

View file

@ -171,7 +171,7 @@ const cmds = struct {
pub fn mini_mode_insert_code_point(self: *Self, ctx: Ctx) Result {
var egc: u32 = 0;
if (!try ctx.args.match(.{tp.extract(&egc)}))
return error.InvalidArgument;
return error.InvalidFindInsertCodePointArgument;
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}
@ -180,7 +180,7 @@ const cmds = struct {
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&bytes)}))
return error.InvalidArgument;
return error.InvalidFindInsertBytesArgument;
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}

View file

@ -114,7 +114,7 @@ const cmds = struct {
pub fn mini_mode_insert_code_point(self: *Self, ctx: Ctx) Result {
var egc: u32 = 0;
if (!try ctx.args.match(.{tp.extract(&egc)}))
return error.InvalidArgument;
return error.InvalidFindInFilesInsertCodePointArgument;
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}
@ -123,7 +123,7 @@ const cmds = struct {
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&bytes)}))
return error.InvalidArgument;
return error.InvalidFindInFilesInsertBytesArgument;
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
self.update_mini_mode_text();
}

View file

@ -111,7 +111,7 @@ const cmds = struct {
pub fn mini_mode_insert_code_point(self: *Self, ctx: Ctx) Result {
var keypress: usize = 0;
if (!try ctx.args.match(.{tp.extract(&keypress)}))
return error.InvalidArgument;
return error.InvalidGotoInsertCodePointArgument;
switch (keypress) {
'0'...'9' => self.insert_char(@intCast(keypress)),
else => {},
@ -124,7 +124,7 @@ const cmds = struct {
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&bytes)}))
return error.InvalidArgument;
return error.InvalidGotoInsertBytesArgument;
self.insert_bytes(bytes);
self.update_mini_mode_text();
self.goto();

View file

@ -32,7 +32,7 @@ const Operation = enum {
pub fn create(allocator: Allocator, ctx: command.Context) !struct { tui.Mode, tui.MiniMode } {
var right: bool = true;
const select = if (tui.get_active_editor()) |editor| if (editor.get_primary().selection) |_| true else false else false;
_ = ctx.args.match(.{tp.extract(&right)}) catch return error.InvalidArgument;
_ = ctx.args.match(.{tp.extract(&right)}) catch return error.InvalidMoveToCharArgument;
const self: *Self = try allocator.create(Self);
self.* = .{
.allocator = allocator,
@ -92,9 +92,9 @@ const cmds = struct {
pub fn mini_mode_insert_code_point(self: *Self, ctx: Ctx) Result {
var code_point: u32 = 0;
if (!try ctx.args.match(.{tp.extract(&code_point)}))
return error.InvalidArgument;
return error.InvalidMoveToCharInsertCodePointArgument;
var buf: [6]u8 = undefined;
const bytes = input.ucs32_to_utf8(&[_]u32{code_point}, &buf) catch return error.InvalidArgument;
const bytes = input.ucs32_to_utf8(&[_]u32{code_point}, &buf) catch return error.InvalidMoveToCharCodePoint;
return self.execute_operation(command.fmt(.{buf[0..bytes]}));
}
pub const mini_mode_insert_code_point_meta = .{ .arguments = &.{.integer} };
@ -102,7 +102,7 @@ const cmds = struct {
pub fn mini_mode_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&bytes)}))
return error.InvalidArgument;
return error.InvalidMoveToCharInsertBytesArgument;
return self.execute_operation(ctx);
}
pub const mini_mode_insert_bytes_meta = .{ .arguments = &.{.string} };

View file

@ -309,7 +309,7 @@ const cmds = struct {
pub fn overlay_insert_code_point(self: *Self, ctx: Ctx) Result {
var egc: u32 = 0;
if (!try ctx.args.match(.{tp.extract(&egc)}))
return error.InvalidArgument;
return error.InvalidOpenRecentInsertCodePointArgument;
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_code_point_meta = .{ .arguments = &.{.integer} };
@ -317,7 +317,7 @@ const cmds = struct {
pub fn overlay_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&bytes)}))
return error.InvalidArgument;
return error.InvalidOpenRecentInsertBytesArgument;
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_bytes_meta = .{ .arguments = &.{.string} };

View file

@ -446,7 +446,7 @@ pub fn Create(options: type) type {
pub fn overlay_insert_code_point(self: *Self, ctx: Ctx) Result {
var egc: u32 = 0;
if (!try ctx.args.match(.{tp.extract(&egc)}))
return error.InvalidArgument;
return error.InvalidPaletteInsertCodePointArgument;
self.insert_code_point(egc) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_code_point_meta = .{ .arguments = &.{.integer} };
@ -454,7 +454,7 @@ pub fn Create(options: type) type {
pub fn overlay_insert_bytes(self: *Self, ctx: Ctx) Result {
var bytes: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&bytes)}))
return error.InvalidArgument;
return error.InvalidPaletteInsertBytesArgument;
self.insert_bytes(bytes) catch |e| return tp.exit_error(e, @errorReturnTrace());
}
pub const overlay_insert_bytes_meta = .{ .arguments = &.{.string} };

View file

@ -642,7 +642,7 @@ const cmds = struct {
pub fn set_theme(self: *Self, ctx: Ctx) Result {
var name: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&name)}))
return tp.exit_error(error.InvalidArgument, null);
return tp.exit_error(error.InvalidSetThemeArgument, null);
self.theme = get_theme_by_name(name) orelse {
self.logger.print("theme not found: {s}", .{name});
return;
@ -713,7 +713,7 @@ const cmds = struct {
pub fn enter_mode(self: *Self, ctx: Ctx) Result {
var mode: []const u8 = undefined;
if (!try ctx.args.match(.{tp.extract(&mode)}))
return tp.exit_error(error.InvalidArgument, null);
return tp.exit_error(error.InvalidEnterModeArgument, null);
var new_mode = self.get_input_mode(mode) catch ret: {
self.logger.print("unknown mode {s}", .{mode});
@ -835,11 +835,11 @@ const cmds = struct {
var iter = ctx.args.buf;
var len = try cbor.decodeArrayHeader(&iter);
if (len < 1)
return tp.exit_error(error.InvalidArgument, null);
return tp.exit_error(error.InvalidRunAsyncArgument, null);
var cmd: []const u8 = undefined;
if (!try cbor.matchValue(&iter, cbor.extract(&cmd)))
return tp.exit_error(error.InvalidArgument, null);
return tp.exit_error(error.InvalidRunAsyncArgument, null);
len -= 1;
var args = std.ArrayList([]const u8).init(self.allocator);
@ -848,7 +848,7 @@ const cmds = struct {
var arg: []const u8 = undefined;
if (try cbor.matchValue(&iter, cbor.extract_cbor(&arg))) {
try args.append(arg);
} else return tp.exit_error(error.InvalidArgument, null);
} else return tp.exit_error(error.InvalidRunAsyncArgument, null);
}
var args_cb = std.ArrayList(u8).init(self.allocator);