refactor: add namespace and section to keybind match events

This commit is contained in:
CJ van den Berg 2025-12-10 15:12:01 +01:00
parent ef30ac9de0
commit 7df83c7e2b
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9
3 changed files with 10 additions and 7 deletions

View file

@ -774,11 +774,13 @@ const BindingSet = struct {
} }
} }
fn send_match_event(_: *const @This(), binding: *const Binding) void { fn send_match_event(self: *const @This(), binding: *const Binding) void {
var buf: [tp.max_message_size]u8 = undefined; var buf: [tp.max_message_size]u8 = undefined;
var stream: std.Io.Writer = .fixed(&buf); var stream: std.Io.Writer = .fixed(&buf);
cbor.writeArrayHeader(&stream, 2) catch return; cbor.writeArrayHeader(&stream, 4) catch return;
cbor.writeValue(&stream, "keybind_match") catch return; cbor.writeValue(&stream, "K") catch return;
cbor.writeValue(&stream, self.name) catch return;
cbor.writeValue(&stream, self.config_section) catch return;
cbor.writeArrayHeader(&stream, binding.commands.len) catch return; cbor.writeArrayHeader(&stream, binding.commands.len) catch return;
for (binding.commands) |cmd| { for (binding.commands) |cmd| {
cbor.writeArrayHeader(&stream, 2) catch return; cbor.writeArrayHeader(&stream, 2) catch return;

View file

@ -136,14 +136,15 @@ fn listen(self: *Self, _: tp.pid_ref, m: tp.message) tp.result {
} }
fn keybind_match(self: *Self, _: tp.pid_ref, m: tp.message) MessageFilter.Error!bool { fn keybind_match(self: *Self, _: tp.pid_ref, m: tp.message) MessageFilter.Error!bool {
var namespace: []const u8 = undefined;
var section: []const u8 = undefined;
var cmds: []const u8 = undefined; var cmds: []const u8 = undefined;
if (!(m.match(.{ "keybind_match", tp.extract_cbor(&cmds) }) catch false)) return false; if (!(m.match(.{ "K", tp.extract(&namespace), tp.extract(&section), tp.extract_cbor(&cmds) }) catch false)) return false;
var result: Writer.Allocating = .init(self.allocator); var result: Writer.Allocating = .init(self.allocator);
defer result.deinit(); defer result.deinit();
const writer = &result.writer; const writer = &result.writer;
writer.writeAll("keybind -> ") catch return true; cbor.toJsonWriter(m.buf, writer, .{}) catch return true;
cbor.toJsonWriter(cmds, writer, .{}) catch return true;
self.append(result.written()) catch return true; self.append(result.written()) catch return true;
return true; return true;

View file

@ -500,7 +500,7 @@ fn receive_safe(self: *Self, from: tp.pid_ref, m: tp.message) !void {
if (try m.match(.{"focus_out"})) if (try m.match(.{"focus_out"}))
return; return;
if (try m.match(.{ "keybind_match", tp.more })) if (try m.match(.{ "K", tp.more }))
return; return;
if (try self.send_widgets(from, m)) if (try self.send_widgets(from, m))