feat: add highlight_references command
This commit is contained in:
parent
c6da708250
commit
ca47d27b76
2 changed files with 38 additions and 0 deletions
|
|
@ -328,6 +328,7 @@ pub const Editor = struct {
|
|||
last_find_query: ?[]const u8 = null,
|
||||
find_history: ?std.ArrayListUnmanaged([]const u8) = null,
|
||||
find_operation: ?enum { goto_next_match, goto_prev_match } = null,
|
||||
highlight_references_state: enum { adding, done } = .done,
|
||||
|
||||
prefix_buf: [8]u8 = undefined,
|
||||
prefix: []const u8 = &[_]u8{},
|
||||
|
|
@ -5798,6 +5799,34 @@ pub const Editor = struct {
|
|||
self.need_render();
|
||||
}
|
||||
|
||||
pub fn highlight_references(self: *Self, _: Context) Result {
|
||||
const file_path = self.file_path orelse return;
|
||||
const primary = self.get_primary();
|
||||
return project_manager.highlight_references(file_path, primary.cursor.row, primary.cursor.col);
|
||||
}
|
||||
pub const highlight_references_meta: Meta = .{ .description = "Language: Highlight references" };
|
||||
|
||||
pub fn add_highlight_reference(self: *Self, match_: Match) void {
|
||||
if (self.highlight_references_state == .done) {
|
||||
self.highlight_references_state = .adding;
|
||||
self.cancel_all_matches();
|
||||
}
|
||||
const root = self.buf_root() catch return;
|
||||
const begin_row = match_.begin.row - @min(match_.begin.row, 1);
|
||||
const begin_col = root.pos_to_width(begin_row, match_.begin.col, self.metrics) catch return;
|
||||
const end_row = match_.end.row - @min(match_.end.row, 1);
|
||||
const end_col = root.pos_to_width(end_row, match_.end.col, self.metrics) catch return;
|
||||
(self.matches.addOne(self.allocator) catch return).* = .{
|
||||
.begin = .{ .row = begin_row, .col = begin_col },
|
||||
.end = .{ .row = end_row, .col = end_col },
|
||||
};
|
||||
self.need_render();
|
||||
}
|
||||
|
||||
pub fn done_highlight_reference(self: *Self) void {
|
||||
self.highlight_references_state = .done;
|
||||
}
|
||||
|
||||
pub fn add_diagnostic(
|
||||
self: *Self,
|
||||
file_path: []const u8,
|
||||
|
|
|
|||
|
|
@ -140,6 +140,15 @@ 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), tp.extract(&lines) })) {
|
||||
if (self.get_active_editor()) |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", "done" })) {
|
||||
if (self.get_active_editor()) |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.add_info_content(lines);
|
||||
if (self.get_active_editor()) |editor|
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue