diff --git a/src/keybind/builtin/flow.json b/src/keybind/builtin/flow.json index 80e7e8f..9b59e99 100644 --- a/src/keybind/builtin/flow.json +++ b/src/keybind/builtin/flow.json @@ -29,7 +29,7 @@ ["f10", "theme_next"], ["f11", "toggle_panel"], ["f12", "toggle_inputview"], - ["alt+!", "select_task"], + ["alt+!", "run_task"], ["ctrl+tab", "next_tab"], ["ctrl+shift+tab", "previous_tab"], ["ctrl+shift+e", "switch_buffers"], diff --git a/src/tui/mode/overlay/task_palette.zig b/src/tui/mode/overlay/task_palette.zig index 4217919..d7d0821 100644 --- a/src/tui/mode/overlay/task_palette.zig +++ b/src/tui/mode/overlay/task_palette.zig @@ -102,17 +102,13 @@ fn select(menu: **Type.MenuState, button: *Type.ButtonState) void { var entry: Entry = undefined; var iter = button.opts.label; if (!(cbor.matchValue(&iter, cbor.extract(&entry)) catch false)) return; - var buffer_name = std.ArrayList(u8).init(menu.*.opts.ctx.allocator); - defer buffer_name.deinit(); - buffer_name.writer().print("*{s}*", .{entry.label}) catch {}; if (entry.command) |cmd| { tp.self_pid().send(.{ "cmd", "exit_overlay_mode" }) catch |e| menu.*.opts.ctx.logger.err(module_name, e); tp.self_pid().send(.{ "cmd", cmd, .{} }) catch |e| menu.*.opts.ctx.logger.err(module_name, e); } else { - project_manager.add_task(entry.label) catch {}; tp.self_pid().send(.{ "cmd", "exit_overlay_mode" }) catch |e| menu.*.opts.ctx.logger.err(module_name, e); - tp.self_pid().send(.{ "cmd", "create_scratch_buffer", .{ buffer_name.items, "", "conf" } }) catch |e| menu.*.opts.ctx.logger.err(module_name, e); - tp.self_pid().send(.{ "cmd", "shell_execute_stream", .{entry.label} }) catch |e| menu.*.opts.ctx.logger.err(module_name, e); + project_manager.add_task(entry.label) catch {}; + tp.self_pid().send(.{ "cmd", "run_task", .{entry.label} }) catch |e| menu.*.opts.ctx.logger.err(module_name, e); } } diff --git a/src/tui/tui.zig b/src/tui/tui.zig index aa8e1d4..c06fdb8 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -916,11 +916,6 @@ const cmds = struct { } pub const switch_buffers_meta: Meta = .{ .description = "Switch buffers" }; - pub fn select_task(self: *Self, _: Ctx) Result { - return self.enter_overlay_mode(@import("mode/overlay/task_palette.zig").Type); - } - pub const select_task_meta: Meta = .{ .description = "Run task" }; - pub fn add_task(self: *Self, ctx: Ctx) Result { var task: []const u8 = undefined; if (try ctx.args.match(.{tp.extract(&task)})) @@ -935,7 +930,7 @@ const cmds = struct { pub fn select(self_: *Type) void { call_add_task(self_.input.items); command.executeName("exit_mini_mode", .{}) catch {}; - command.executeName("select_task", .{}) catch {}; + command.executeName("run_task", .{}) catch {}; } }, ctx); } @@ -952,6 +947,24 @@ const cmds = struct { }; } + pub fn run_task(self: *Self, ctx: Ctx) Result { + var task: []const u8 = undefined; + if (try ctx.args.match(.{tp.extract(&task)})) { + var buffer_name = std.ArrayList(u8).init(self.allocator); + defer buffer_name.deinit(); + buffer_name.writer().print("*{s}*", .{task}) catch {}; + project_manager.add_task(task) catch {}; + tp.self_pid().send(.{ "cmd", "create_scratch_buffer", .{ buffer_name.items, "", "conf" } }) catch |e| self.logger.err("task", e); + tp.self_pid().send(.{ "cmd", "shell_execute_stream", .{task} }) catch |e| self.logger.err("task", e); + } else { + return self.enter_overlay_mode(@import("mode/overlay/task_palette.zig").Type); + } + } + pub const run_task_meta: Meta = .{ + .description = "Run a task", + .arguments = &.{.string}, + }; + pub fn delete_task(_: *Self, ctx: Ctx) Result { var task: []const u8 = undefined; if (!try ctx.args.match(.{tp.extract(&task)}))