From 3f9376b5812d717ca9d9bcf3c1276b69d4e888b8 Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Sun, 8 Sep 2024 17:46:18 -0700 Subject: [PATCH] Read more on each call to treesit's buffer reader * src/treesit.c (treesit_read_buffer): Read until the gap or visible end, instead of reading a single char. (cherry picked from commit bf23382f1f2d6ea072db4e4750f8a345f77a3ef2) --- src/treesit.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/treesit.c b/src/treesit.c index cac1d4b4d11..e8eecbc02d1 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -1186,11 +1186,13 @@ treesit_read_buffer (void *parser, uint32_t byte_index, beg = NULL; len = 0; } - /* Normal case, read a character. */ + /* Normal case, read until the gap or visible end. */ else { beg = (char *) BUF_BYTE_ADDRESS (buffer, byte_pos); - len = BYTES_BY_CHAR_HEAD ((int) *beg); + ptrdiff_t gap_bytepos = buffer->text->gpt_byte; + len = (byte_pos < gap_bytepos) + ? gap_bytepos - byte_pos : visible_end - byte_pos; } /* We never let tree-sitter to parse buffers that large so this assertion should never hit. */ -- 2.39.5