emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 02b6be892fa 2/3: Add missing calls to treesit_record_change in


From: Yuan Fu
Subject: emacs-29 02b6be892fa 2/3: Add missing calls to treesit_record_change in editfns.c
Date: Thu, 29 Jun 2023 14:16:30 -0400 (EDT)

branch: emacs-29
commit 02b6be892fa1a30b42c3df21319dddd2f445175e
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>

    Add missing calls to treesit_record_change in editfns.c
    
    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 | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/editfns.c b/src/editfns.c
index 0cbeefb3262..a1e48daf6c6 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -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;
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]