]> git.eshelyaron.com Git - emacs.git/commitdiff
Add missing calls to treesit_record_change in editfns.c
authorYuan Fu <casouri@gmail.com>
Thu, 29 Jun 2023 00:03:19 +0000 (17:03 -0700)
committerYuan Fu <casouri@gmail.com>
Thu, 29 Jun 2023 18:15:29 +0000 (11:15 -0700)
These should be all that are missing.  See the next commit for detail.

* src/editfns.c (Ftranslate_region_internal):
(Ftranspose_regions): Call treesit_record_change.

src/editfns.c

index 0cbeefb326280d3f63408bf6c6df2b643ef8a8d1..a1e48daf6c639f8abdd02ca5c57ac7ce4540ee37 100644 (file)
@@ -2603,6 +2603,15 @@ It returns the number of characters changed.  */)
                    *p++ = *str++;
                  signal_after_change (pos, 1, 1);
                  update_compositions (pos, pos + 1, CHECK_BORDER);
+
+#ifdef HAVE_TREE_SITTER
+                 /* In the previous branch, replace_range() notifies
+                     changes to tree-sitter, but in this branch, we
+                     modified buffer content manually, so we need to
+                     notify tree-sitter manually.  */
+                 treesit_record_change (pos_byte, pos_byte + len,
+                                        pos_byte + len);
+#endif
                }
              characters_changed++;
            }
@@ -4776,6 +4785,13 @@ ring.  */)
       adjust_markers_bytepos (start1, start1_byte, end2, end2_byte, 0);
     }
 
+#ifdef HAVE_TREE_SITTER
+  /* I don't think it's common to transpose two far-apart regions, so
+     amalgamating the edit into one should be fine.  This is what the
+     signal_after_change below does, too.  */
+  treesit_record_change (start1_byte, end2_byte, end2_byte);
+#endif
+
   signal_after_change (start1, end2 - start1, end2 - start1);
   return Qnil;
 }