]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix treesit_ensure_parsed (bug#62333)
authorYuan Fu <casouri@gmail.com>
Fri, 24 Mar 2023 07:17:10 +0000 (00:17 -0700)
committerYuan Fu <casouri@gmail.com>
Fri, 24 Mar 2023 07:18:19 +0000 (00:18 -0700)
* src/treesit.c (treesit_ensure_parsed): Check for need_reparse after
treesit_sync_visible_region runs, because as the comment says,
treesit_sync_visible_region might modify need_reparse.

src/treesit.c

index 5a4fe3e88033956d5cf50394f752294475744949..1bb52888f4b3e745beb7c7e2be4f846c05a70747 100644 (file)
@@ -1016,11 +1016,6 @@ treesit_call_after_change_functions (TSTree *old_tree, TSTree *new_tree,
 static void
 treesit_ensure_parsed (Lisp_Object parser)
 {
-  /* Make sure this comes before everything else, see comment
-     (ref:notifier-inside-ensure-parsed) for more detail.  */
-  if (!XTS_PARSER (parser)->need_reparse)
-    return;
-
   struct buffer *buffer = XBUFFER (XTS_PARSER (parser)->buffer);
 
   /* Before we parse, catch up with the narrowing situation.  */
@@ -1029,6 +1024,11 @@ treesit_ensure_parsed (Lisp_Object parser)
      because it might set the flag to true.  */
   treesit_sync_visible_region (parser);
 
+  /* Make sure this comes before everything else, see comment
+     (ref:notifier-inside-ensure-parsed) for more detail.  */
+  if (!XTS_PARSER (parser)->need_reparse)
+    return;
+
   TSParser *treesit_parser = XTS_PARSER (parser)->parser;
   TSTree *tree = XTS_PARSER (parser)->tree;
   TSInput input = XTS_PARSER (parser)->input;