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-Tag: archive/raspbian/1%30.1+1-3+rpi1^2~2^2~20^2~447 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=bf23382f1f2d6ea072db4e4750f8a345f77a3ef2;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. --- diff --git a/src/treesit.c b/src/treesit.c index 970754f3c1b..b047f0344cc 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -1225,11 +1225,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. */