diff options
| author | Yuan Fu <casouri@gmail.com> | 2024-09-08 17:46:18 -0700 |
|---|---|---|
| committer | Yuan Fu <casouri@gmail.com> | 2024-09-08 20:52:20 -0700 |
| commit | bf23382f1f2d6ea072db4e4750f8a345f77a3ef2 (patch) | |
| tree | 0da09e00bdff5eb9b528d42be844dc2a3d2ba601 /src | |
| parent | 3435464452b4947098b8ccbe93e5c0afdd2ed06e (diff) | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/treesit.c | 6 |
1 files changed, 4 insertions, 2 deletions
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. */ |
