aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuan Fu2024-09-08 17:46:18 -0700
committerYuan Fu2024-09-08 20:52:20 -0700
commitbf23382f1f2d6ea072db4e4750f8a345f77a3ef2 (patch)
tree0da09e00bdff5eb9b528d42be844dc2a3d2ba601
parent3435464452b4947098b8ccbe93e5c0afdd2ed06e (diff)
downloademacs-bf23382f1f2d6ea072db4e4750f8a345f77a3ef2.tar.gz
emacs-bf23382f1f2d6ea072db4e4750f8a345f77a3ef2.zip
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.
-rw-r--r--src/treesit.c6
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,
1225 beg = NULL; 1225 beg = NULL;
1226 len = 0; 1226 len = 0;
1227 } 1227 }
1228 /* Normal case, read a character. */ 1228 /* Normal case, read until the gap or visible end. */
1229 else 1229 else
1230 { 1230 {
1231 beg = (char *) BUF_BYTE_ADDRESS (buffer, byte_pos); 1231 beg = (char *) BUF_BYTE_ADDRESS (buffer, byte_pos);
1232 len = BYTES_BY_CHAR_HEAD ((int) *beg); 1232 ptrdiff_t gap_bytepos = buffer->text->gpt_byte;
1233 len = (byte_pos < gap_bytepos)
1234 ? gap_bytepos - byte_pos : visible_end - byte_pos;
1233 } 1235 }
1234 /* We never let tree-sitter to parse buffers that large so this 1236 /* We never let tree-sitter to parse buffers that large so this
1235 assertion should never hit. */ 1237 assertion should never hit. */