upgrade textual command -> cmd-regs-filling path, to use expression evaluation when possible, and to use fuzzy filtering over associated query lists when possible

This commit is contained in:
Ryan Fleury
2025-06-21 09:24:08 -07:00
parent 65f00f3b17
commit b6eca01e2a
7 changed files with 199 additions and 65 deletions
+4 -14
View File
@@ -645,11 +645,7 @@ entry_point(CmdLine *cmd_line)
if(dst_ws != &rd_nil_window_state)
{
dst_ws->window_temporarily_focused_ipc = 1;
U64 first_space_pos = str8_find_needle(msg, 0, str8_lit(" "), 0);
String8 cmd_kind_name_string = str8_prefix(msg, first_space_pos);
String8 cmd_args_string = str8_skip_chop_whitespace(str8_skip(msg, first_space_pos));
RD_CmdKindInfo *cmd_kind_info = rd_cmd_kind_info_from_string(cmd_kind_name_string);
if(cmd_kind_info != &rd_nil_cmd_kind_info) RD_RegsScope()
RD_RegsScope()
{
if(dst_ws->cfg_id != rd_regs()->window)
{
@@ -661,14 +657,7 @@ entry_point(CmdLine *cmd_line)
rd_regs()->view = panel_tree.focused->selected_tab->id;
scratch_end(scratch);
}
rd_regs_fill_slot_from_string(cmd_kind_info->query.slot, cmd_args_string);
rd_push_cmd(cmd_kind_name_string, rd_regs());
rd_request_frame();
}
else
{
log_user_errorf("\"%S\" is not a command.", cmd_kind_name_string);
rd_request_frame();
rd_cmd(RD_CmdKind_RunExternalDriverTextCommand, .string = msg);
}
}
}
@@ -782,8 +771,9 @@ entry_point(CmdLine *cmd_line)
IPCInfo *ipc_info = (IPCInfo *)ipc_sender2main_shared_memory_base;
U8 *buffer = (U8 *)(ipc_info+1);
U64 buffer_max = IPC_SHARED_MEMORY_BUFFER_SIZE - sizeof(IPCInfo);
String8List parts = os_string_list_from_argcv(scratch.arena, cmd_line->argc - 1, cmd_line->argv + 1);
StringJoin join = {str8_lit(""), str8_lit(" "), str8_lit("")};
String8 msg = str8_list_join(scratch.arena, &cmd_line->inputs, &join);
String8 msg = str8_list_join(scratch.arena, &parts, &join);
ipc_info->msg_size = Min(buffer_max, msg.size);
MemoryCopy(buffer, msg.str, ipc_info->msg_size);
os_semaphore_drop(ipc_sender2main_signal_semaphore);