feat: add Buffer get_from_pos function

This commit is contained in:
CJ van den Berg 2024-07-23 22:21:12 +02:00
parent 2db66a1369
commit fb1d91585f
2 changed files with 11 additions and 0 deletions

View file

@ -595,6 +595,16 @@ const Node = union(enum) {
return if (copy_buf) |buf_| buf_[0..ctx.bytes] else null;
}
pub fn get_from_pos(self: *const Node, start: Cursor, result_buf: []u8, metrics: Metrics) []const u8 {
var end: Cursor = .{};
end.move_buffer_end(self, metrics);
const result = self.get_range(.{ .begin = start, .end = end }, result_buf, null, null, metrics) catch |e| switch (e) {
error.NoSpaceLeft => result_buf[0..],
else => @panic("buffer overflow in get_from_start_pos"),
};
return result orelse "";
}
pub fn delete_range(self: *const Node, sel: Selection, a: Allocator, size: ?*usize, metrics: Metrics) error{Stop}!Root {
var wcwidth: usize = 0;
_ = self.get_range(sel, null, size, &wcwidth, metrics) catch return error.Stop;

View file

@ -2910,6 +2910,7 @@ pub const Editor = struct {
syn.refresh_full(content.items)
else
syn.refresh(content.items);
// syn.refresh_from_buffer(root, self.plane.metrics()); // TODO: partial refresh from buffer when treez PR is merged and flow-syntax is updated
self.syntax_refresh_full = false;
self.syntax_token = token;
} else {