From 6a6fb11c8e9650bb6bf028b1834401b16f6d5f3c Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 12 Jan 2026 16:14:52 +0100 Subject: [PATCH] refactor: send highlight references to correct editor for file path --- src/tui/mainview.zig | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/tui/mainview.zig b/src/tui/mainview.zig index cad0b71..7c75fb8 100644 --- a/src/tui/mainview.zig +++ b/src/tui/mainview.zig @@ -166,13 +166,13 @@ pub fn receive(self: *Self, from_: tp.pid_ref, m: tp.message) error{Exit}!bool { self.find_in_files_state = .done; return true; } else if (try m.match(.{ "HREF", tp.extract(&path), tp.extract(&begin_line), tp.extract(&begin_pos), tp.extract(&end_line), tp.extract(&end_pos) })) { - if (self.get_active_editor()) |editor| editor.add_highlight_reference(.{ + if (self.get_editor_for_file(path)) |editor| editor.add_highlight_reference(.{ .begin = .{ .row = begin_line, .col = begin_pos }, .end = .{ .row = end_line, .col = end_pos }, }); return true; } else if (try m.match(.{ "HREF", tp.extract(&path), "done" })) { - if (self.get_active_editor()) |editor| editor.done_highlight_reference(); + if (self.get_editor_for_file(path)) |editor| editor.done_highlight_reference(); return true; } else if (try m.match(.{ "hover", tp.extract(&path), tp.string, tp.extract(&lines), tp.extract(&begin_line), tp.extract(&begin_pos), tp.extract(&end_line), tp.extract(&end_pos) })) { try self.set_info_content(lines, .replace); @@ -1593,6 +1593,16 @@ pub fn get_editor_for_buffer(self: *Self, buffer: *Buffer) ?*ed.Editor { return null; } +pub fn get_editor_for_file(self: *Self, file_path: []const u8) ?*ed.Editor { + for (self.views.widgets.items) |*view| { + const editor = view.widget.get("editor") orelse continue; + if (editor.dynamic_cast(ed.EditorWidget)) |p| + if (std.mem.eql(u8, p.editor.file_path orelse continue, file_path)) + return &p.editor; + } + return null; +} + pub fn get_view_for_file(self: *Self, file_path: []const u8) ?usize { for (self.views.widgets.items, 0..) |*view, n| { const editor = view.widget.get("editor") orelse continue;