aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorYuan Fu2022-06-15 21:53:15 -0700
committerYuan Fu2022-06-16 11:52:04 -0700
commit7cee82a91d287e42e6596960cbee17157cde4b29 (patch)
treeeb6ec90eaacdc78137d87fc63632a18226027735 /src/buffer.c
parentbd1b27b7c7bbd969cf76409499bb84a83600c42a (diff)
downloademacs-7cee82a91d287e42e6596960cbee17157cde4b29.tar.gz
emacs-7cee82a91d287e42e6596960cbee17157cde4b29.zip
Fix treesit function ts_record_change and friends
In ts_record_change, the way we calculate tree-sitter change was wrong: ptrdiff_t affected_start = max (visible_beg, start_byte) - visible_beg; ptrdiff_t affected_old_end = min (visible_end, affected_start + bytes_del); ptrdiff_t affected_new_end = affected_start + bytes_ins; I changed it to below (also renamed variables) ptrdiff_t start_offset = min (visible_end, max (visible_beg, start_byte)) - visible_beg; ptrdiff_t old_end_offset = min (visible_end, max (visible_beg, old_end_byte)) - visible_beg; ptrdiff_t new_end_offset = min (visible_end, max (visible_beg, new_end_byte)) - visible_beg; Also previously only visible_end is changed (in a wrong way) XTS_PARSER (lisp_parser)->visible_end = affected_new_end; Now we have a whole new bunch of code that makes the right change. * src/treesit.c (ts_tree_edit_1): Add assertion. (ts_record_change): See above. (ts_ensure_position_synced): Add assertion. (ts_ensure_parsed): Only free if non-NULL. (make_ts_parser): Add assertion. (Ftreesit_parser_set_included_ranges): Ensure parsed before setting ranges. (Ftreesit_parser_included_ranges): Add assertion.
Diffstat (limited to 'src/buffer.c')
0 files changed, 0 insertions, 0 deletions