From: Yuan Fu Date: Mon, 9 Sep 2024 00:46:18 +0000 (-0700) Subject: Read more on each call to treesit's buffer reader X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3f9376b5812d717ca9d9bcf3c1276b69d4e888b8;p=emacs.git 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) --- 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. */